我最近开始深入研究JavaScript,并在JQuery中遇到过这个代码构造。
(function( window, undefined ) {
})(window)
读取堆栈溢出(以及其他地方)我得出结论,这与
相同function foo(window, undefined) {
...
}
foo(window);
我的假设是否正确? 如果是这样,前者的优势是什么? (除了令人困惑的新手)
答案 0 :(得分:19)
要理解它,您需要了解一些事项:
我希望这很清楚,如果不是,请告诉我。我从上面提到的Paul Irish的视频中学到了所有这些。
答案 1 :(得分:5)
这是一个匿名函数。它被创建然后超出范围,这是优势。它立即被创建和实例化。这样做的好处是它不会与全局命名空间中的任何函数发生冲突,因此不会删除您可能包含在页面上的任何内容。
答案 2 :(得分:1)
这是一个匿名函数,它有很多好处,比如只在当前范围内活动。 You can read more about it here.