我不知道您是否需要查看完整的代码,但我已经看到了一些这样做的插件:
window.dataValidate = dataValidate
这是否将“dataValidate”添加到窗口对象,或者它是如何工作的?
我不知道您是否需要查看完整的代码,但我已经看到了一些这样做的插件:
window.dataValidate = dataValidate
这是否将“dataValidate”添加到窗口对象,或者它是如何工作的?
这是否将“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
?)。