2014-09-18 272 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; 
}