窗口对象(window.something = something)在JavaScript中做了什么?

时间:2013-05-25 10:00:39

标签: javascript

我不知道您是否需要查看完整代码,但我看到一些插件可以执行此操作:

window.dataValidate = dataValidate

这会将'dataValidate'添加到窗口对象,还是如何工作?

1 个答案:

答案 0 :(得分:6)

  

这是否将'dataValidate'添加到窗口对象

是的,它会。

例如,如果你在另一个范围内;

function foo() {
    var bar = 4;

    window.bar = bar;
}

您现在已将bar设为全局,并且可以从任何地方访问。如果没有window.bar = bar,您只能在foo()内访问它。

您通常会在IIFE结束时使用此功能,工作发布到世界其他地方(例如jQuery);

(function () {
   var jQuery;

   // Setup jQuery

   window.jQuery = jQuery;
}());

您可能会看到人们这样做;

function foo() {
    bar = 4; // Note the lack of `var`
}

通过使用“隐含的全局”,这具有相同的效果;但它会在ES5严格模式下抛出错误,并且通常被认为是一种不好的做法(程序员是否意味着将其设为全局,或者他们是否只是偶然忽略了var)。