JavaScript YUI3使用全局变量?

时间:2011-05-17 16:50:10

标签: javascript yui closures yui3

我无法弄清楚如何从YUI3中更新全局变量。

请考虑以下代码:

window.myVariable = 'data-one';
var yuiWrap = YUI().use('node',function(Y) {
  console.log(window.myVariable); // 'data-one'
  window.myVariable = 'data-two';
  console.log(window.myVariable); // 'data-two'
});
console.log(window.myVariable); // 'data-one'

任何人都可以向我解释这个吗?这给我带来了很多麻烦。为什么可以从YUI3块中访问window.myVariable但没有正确更新?

我认为它可能与Closures有关,但我不明白为什么Closures应该应用于全局“窗口”对象。

帮助?

1 个答案:

答案 0 :(得分:4)

回调不会立即触发,但发生了一些事后:

  

将一个或多个模块附加到YUI实例。执行此操作时,将分析需求,并且可能会发生以下几种情况之一:

     
      
  • 页面上提供了所有要求 - 模块附加到实例。如果提供,则同步执行使用回调。
  •   
  • 缺少模块,Get实用程序不可用或'bootstrap'配置为false - 发出有关缺少模块的警告,并附加了所有可用模块。
  •   
  • 缺少模块,Loader不可用,但Get实用程序是,而且boost不是假的 - 在执行以下操作之前,加载程序是自举的....
  •   
  • 缺少模块且Loader可用 - 加载程序扩展依赖关系树并获取缺少的模块。 当加载器被finshed时,提供给use的回调是异步执行的。
  •