无法在javascript函数中读取全局变量:(

时间:2011-03-07 23:49:10

标签: javascript scope

我遇到一个奇怪的问题,全局变量消失在我身上。这是一些精简的半伪代码:

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 个答案:

答案 0 :(得分: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就很难说。

答案 1 :(得分:1)

您的test()函数可能在globy所在的范围之外定义。没有更多细节,很难说。