2014-09-18 111 views
0

有一个称为数字的全局变量。 函数计算一个随机数并将其存储在mynumber变量中。从函数更新全局变量

var mynumber; 

function one(){ 
var mynumber = Math.floor(Math.random() * 6) + 1; 
} 

我需要在一个单独的函数中使用它,如下所示。但是一个错误说未定义 - 这意味着来自函数1的值不会更新。

function two(){ 
alert(mynumber); 
} 

如何解决这个问题。有没有办法更新mynumber全局变量。

+1

在代码中有两个不同的mynumber变量。你的全局变量在函数之外,永远不会被更新。从您的函数中删除var mynumber。 – 2014-09-18 16:06:34

回答

3

如果声明一个变量为var,它将在当前范围内创建它。如果你不这样做,它会在全球范围内声明它。

var mynumber; 

function one(){ 
    mynumber = Math.floor(Math.random() * 6) + 1; // affects the global scope 
} 

您还可以指定希望在全球范围内,即使你定义一个局部变量太多:

function one(){ 
    var mynumber = 1; // local 
    window.mynumber = Math.floor(Math.random() * 6) + 1; // affects the global scope 
} 

知道,在全球范围window你可以得到相当调皮与修改全局变量:

function one(){ 
    var mynumber = Math.floor(Math.random() * 6) + 1; // local 
    window['mynumber'+mynumber] = mynumber; // sets window.mynumber5 = 5 (or whatever the random ends up as) 
} 
3

你有什么:

var mynumber = Math.floor(Math.random() * 6) + 1; 

声明一个新的局部变量,然后设置一个值。放下var,你会更新原件。

function one(){ 
    mynumber = Math.floor(Math.random() * 6) + 1; 
}