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

Hal*_*991 6 javascript

我不知道你是否需要看到完整的代码,但我看到一些插件可以做到这一点:

window.dataValidate = dataValidate
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*att 7

这是否会将"dataValidate"添加到窗口对象中

是的,它会的.

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

function foo() {
    var bar = 4;

    window.bar = bar;
}
Run Code Online (Sandbox Code Playgroud)

您现在已经创建了bar全局,并且可以从任何地方访问它.如果没有window.bar = bar,你只能在其中访问它foo().

您通常会在IIFE结束时看到这个用于工作发布到世界其他地方(例如jQuery);

(function () {
   var jQuery;

   // Setup jQuery

   window.jQuery = jQuery;
}());
Run Code Online (Sandbox Code Playgroud)

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

function foo() {
    bar = 4; // Note the lack of `var`
}
Run Code Online (Sandbox Code Playgroud)

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

  • 它只会在ES5严格模式下抛出错误 - 在ES5规范的非严格模式下它不会. (2认同)