从函数更新全局变量

时间:2014-09-18 16:03:24

标签: javascript html function variables scope

有一个名为numbers的全局变量。 函数1计算一个随机数并将其存储在mynumber变量中。

var mynumber;

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

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

function two (){
alert(mynumber);
}

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

2 个答案:

答案 0 :(得分:3)

你有什么:

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

声明一个新的局部变量,然后设置一个值。删除var,您将更新原始文件。

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

答案 1 :(得分: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)
}