我不知道您是否需要查看完整代码,但我看到一些插件可以执行此操作:
window.dataValidate = dataValidate
这会将'dataValidate'添加到窗口对象,还是如何工作?
答案 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
? )。