2014-10-10 2 views
0

У меня есть этот myObject, сгенерированный в foo.js, и измененный в bar.js.jQuery глобальная переменная с getScript

И я попытался получить результат, когда getScript сделан. Однако, похоже, myObject не является глобальной переменной, если он деколирован внутри jQuery.

Может кто-нибудь, пожалуйста, объясните мне это?

foo.js

/* 
    // this works fine, but I want to decalre it inside jQuery 
    var myObject = { 
     str: "hello world", 
     num: "123" 
    }; 
*/ 

$(function() { 

    // this makes myObject NOT a global valriable 
    var myObject = { 
     str: "hello world", 
     num: "123" 
    }; 

    alert(myObject.str + " " + myObject.num); 

    $.getScript("bar.js", function() { 
     alert(myObject.str + " " + myObject.num); 
    }); 
}); 

bar.js

$(function() { 
    myObject = { 
     str: "new string", 
     num: "999" 
    }; 
}); 

ответ

0

OK, спасибо Арун, но это работает ... window .myObject

$(function() { 

    // global variable defined inside function 
    window.myObject = { 
     str: "hello world", 
     num: "123" 
    }; 

    // ... 
}); 
+0

, это то же самое, что объявить ее за пределами –

+0

@ArunPJohny да, они имеют одинаковую область действия, но, как я заявил в своем вопросе ... Я хочу, чтобы переменная была ** указанный внутри ** jQuery. – user1643156

0

Поскольку вы объявили переменную внутри функции, она является локальной функции. Что вы можете сделать, это объявить переменную снаружи, но и присвоить значение внутри готового обработчика JQuery

foo.js

/* 
    // this works fine, but I want to decalre it inside jQuery 
    var myObject = { 
     str: "hello world", 
     num: "123" 
    }; 
*/ 

var myObject; 
$(function() { 

    // this makes myObject NOT a global valriable 
    myObject = { 
     str: "hello world", 
     num: "123" 
    }; 

    alert(myObject.str + " " + myObject.num); 

    $.getScript("bar.js", function() { 
     alert(myObject.str + " " + myObject.num); 
    }); 
}); 

bar.js

$(function() { 
    myObject = { 
     str: "new string", 
     num: "999" 
    }; 
}); 

Demo: Plunker

+0

Итак ... переменные внутри функций 2 JQuery (от 2 JS-файлов в моем примере), не в том же объеме, что правильно? – user1643156

+0

@ user1643156 yes ... в зависимости от того, как объявлена ​​переменная –

Смежные вопросы