我对JS很新,我对这里有疑问。假设我有这样的功能:
function test(a) {}
可以通过window
访问,所以这样做:
window.test
我可以调用该函数。但是将所有函数绑定到window
对象的目的是什么?有什么优势吗?
我几乎没有问题:
window
对象?是每页吗?window
window
甚至可以访问私有变量,函数吗?提前致谢。
答案 0 :(得分:1)
窗口对象是浏览器窗口(1)。或者现在的标签。它是浏览器设置的系统对象。在global scope
中创建的所有函数和表达式都绑定到窗口对象(2)。 JavaScript无法创建像 c 或 java 那样的私有变量。但是,当值在closure
中时,无法通过窗口对象(3)访问它。
关闭:具有自己范围的函数。闭包允许使用仅对函数
可用的私有变量考虑以下代码:
var createClosure = function() {
var a = 0;
return function() {
a++;
return a;
};
};
var a = createClosure();
a(); //displays 1
a(); //displays 2
现在有两个a
。一个a
是只能由createClosure()
访问的私有变量,另一个a
是window
对象的属性(全局可访问),并且是对返回函数的引用。 createClosure
。您无法全局访问第一个a
。
在函数中,您需要在定义变量时使用var
关键字。如果不是,他们就会变得全球化。
答案 1 :(得分:1)
Window是全局范围,所以
var something = 'hi';
// or
window.something = 'hi';
// product the same result.
通常将变量添加到全局范围被认为是错误的,并且您应该使用闭包来创建对象/模块,以便将您创建的全局变量的数量保持在最小值。即。
var myModule = (function () {
var something; // private, only accessable in this function
return {
someOtherThing : 'some value';
// public, accessed with myModule.someOtherThing
}
})();
在上面的例子中,只有window.myModule是全局的,内部变量/函数不会是
答案 2 :(得分:0)
每个变量或函数都可以通过窗口“keyword”访问,因为window是javascript中的超全局变量。