2011-03-07 55 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