可能重复:
How does the (function() {})() construct work and why do people use it?
学习JavaScript,我遇到了这个功能:
(function(window, undefined){
// …
})(window);
我想知道这是什么类型的功能以及如何调用它。
答案 0 :(得分:2)
这是一种广泛使用的模式,允许您使用本地范围来声明所有变量,而不会污染全局范围。
只是立即调用FunctionExpression,window
参数主要用于将标识符查找缩短到本地范围。
在浏览器环境中,window
是全局对象的一个属性,它指向全局对象本身,如果它存在于本地范围内,则解析速度会更快。
关于undefined
参数,它用于确保您可以毫无后顾之忧地使用它,在某些实现中(实际上所有基于ECMAScript 3的实现)undefined
全局属性({{1} })是可变的,这意味着有人可以将其值更改为例如:
window.undefined
打破你的剧本。