闭包中的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
语句时,尚未分配变量。