2011-03-07 56 views
1

我有全局變量對我消失的一個奇怪的問題的讀取全局變量下面是一些精簡半僞代碼:不能在javascript函數:(

var globy = 99; 

jQuery.get("file", function(){ 
    check(); 
}) 

function check(){ 
main(); 
} 

function main(){ 
forloop 
    whileloop 
    forloop 
    while(test()){} 
} 

function test(){ 
    //globy causes a reference error here 
} 

這應該解釋代碼結構一直到test()函數「globy」都很好,但突然在test()內部,所有的全局變量都消失了,怎麼回事?

回答

2

如果您正在將所有內容都包裝在$(document).ready()中,但是您的test()功能已準備就緒,您將遇到一個範圍界定問題。

$(document).ready(function() { 
    var globy = 99; 

    jQuery.get("file", function() { 
     check(); 
    }) 

    function check() { 
     main(); 
    } 

    function main() { 
     forloop 
     whileloop 
     forloop 
     while (test()) {} 
    } 
}); 

function test() { 
    //globy causes a reference error here 
} 

除此之外,很難說沒有真正的js。

+0

啊哈。你是對的!我測試過()實際上是在一個單獨的文件中,我包含在頂部。我想現在我可以把文件準備好了。 getScript()是否允許我在'$(document).ready()'內部拉外部腳本? – Moss 2011-03-08 00:11:33

1

你的test()函數可能在globy沒有更多細節,很難說。

+3

解決這個問題的方法是使用'window.globy'。如果你*必須*使用全局變量,那就是。 – Reid 2011-03-07 23:55:14

+0

+1但是不要做裏德所說的:) – Dimitry 2011-03-07 23:55:54