6

我不知道您是否需要查看完整的代码,但我已经看到了一些这样做的插件:

window.dataValidate = dataValidate

这是否将“dataValidate”添加到窗口对象,或者它是如何工作的?

4

1 回答 1

7

这是否将“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)。

于 2013-05-25T10:03:28.130 回答