闭包中的javascript变量未显示由$(document).ready初始化时分配的值
在我的应用程序中,我有以下关闭。它包含一个闭包中的javascript变量未显示由$(document).ready初始化时分配的值,javascript,jquery,closures,Javascript,Jquery,Closures,在我的应用程序中,我有以下关闭。它包含一个变量,该变量在$(文档)中初始化。就绪: var myClosure = (function() { var thing; $(document).ready( function() { thing = new ClassDefinedInSomeOtherFile(); } ) return { thing: thing }; })(); 当页面加载时(我在chrome中调试),到达$(do
变量
,该变量在$(文档)中初始化。就绪
:
var myClosure = (function() {
var thing;
$(document).ready(
function() {
thing = new ClassDefinedInSomeOtherFile();
}
)
return {
thing: thing
};
})();
当页面加载时(我在chrome中调试),到达$(document).ready()
中的断点,我可以看到thing
被分配到其他文件中定义的类的对象
但是,试图随后访问myClosure.thing
的元素遇到错误,指出myClosure.thing
未定义(从控制台调用myClosure.thing
)。如果myClosure
中的return
块暴露了thing
,为什么在运行$(document).ready()时它不反映分配给它的新值
谢谢 您正在使用的so立即执行并返回{thing:undefined}
,之后当.ready
事件触发时,它运行并更改thing
,但这不会更改返回的对象,因此您将得到myClosure。thing
是未定义的
解决方案:
$(document).ready(function() {
var myClosure = (function() {
var thing;
thing = new ClassDefinedInSomeOtherFile();
return {
thing: thing
};
})()
});
$(document).ready()
异步运行。执行return
语句时,尚未分配变量。