Moss
Moss

Reputation: 3803

Can't read global variables in a javascript function :(

I am having a strange problem with global variables disappearing on me. Here is some stripped down semi-pseudo-code:

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
}

That should explain the code structure. All the way up to the test() function "globy" is fine but suddenly inside test() all global variables disappear. What the heck?

Upvotes: 1

Views: 2597

Answers (2)

Mark Coleman
Mark Coleman

Reputation: 40863

If you are wrapping everything in a $(document).ready() but have your test() function outside of the document ready you will have a scoping issue.

$(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
}

Besides that it will be hard to say without the real js.

Upvotes: 2

Dimitry
Dimitry

Reputation: 6603

Your test() function is probably defined outside the scope where globy resides. Without more detail, it's hard to say.

Upvotes: 1

Related Questions