在我的应用中,我有以下关闭。它包含var
,在$(document).ready
:
var myClosure = (function() {
var thing;
$(document).ready(
function() {
thing = new ClassDefinedInSomeOtherFile();
}
)
return {
thing: thing
};
})();
当页面加载时(我在chrome中调试),到达了$(document).ready()
中的断点,我可以看到thing
被分配给 ClassDefinedInSomeOtherFile的对象。 < / p>
但是,尝试随后访问myClosure.thing
的元素会遇到错误,指出myClosure.thing
未定义(从控制台到myClosure.thing
的调用也是如此)。如果thing
中的return
阻止了myClosure
,{为什么它会在$(document).ready()
运行时不反映分配给它的新值?
谢谢!
答案 0 :(得分:0)
您正在使用IIFE因此立即执行并返回{ thing: undefined}
,之后当.ready
事件触发时,它会运行并更改thing
,但不会更改返回对象,因此myClosure.thing
为undefined
解决方案:
$(document).ready(function() {
var myClosure = (function() {
var thing;
thing = new ClassDefinedInSomeOtherFile();
return {
thing: thing
};
})()
});