我最近開始深入研究JavaScript,並在JQuery中遇到了這個代碼構造。瞭解jQuery源代碼
(function(window, undefined) {
})(window)
在堆棧溢出閱讀(和其他地方),我得出的結論是,這是一樣的
function foo(window, undefined) {
...
}
foo(window);
我在我的假設是正確的? 如果是這樣,前者的優點是什麼? (除了混淆新事物)
我最近開始深入研究JavaScript,並在JQuery中遇到了這個代碼構造。瞭解jQuery源代碼
(function(window, undefined) {
})(window)
在堆棧溢出閱讀(和其他地方),我得出的結論是,這是一樣的
function foo(window, undefined) {
...
}
foo(window);
我在我的假設是正確的? 如果是這樣,前者的優點是什麼? (除了混淆新事物)
這是一個匿名函數。它被創建,然後超出範圍,這是優勢。它被立即創建和實例化。這樣做的好處是它不會與全局命名空間中的任何函數相沖突,因此不會消除您可能包含在頁面中的任何內容。
這是有道理的,尤其是當與下面的答案中的鏈接相結合,並在該上下文中看到jquery中的最後幾行。 – Elija 2010-10-02 17:25:10
這是一個匿名函數,它有很多好處,比如只在當前範圍內有效。 You can read more about it here.
有你需要知道它的意義幾件事情:
我希望這是明確的,讓我知道如果它不是。我從上面提到的Paul Irish的視頻中學到了這些。
http://stackoverflow.com/questions/2716069/how-does-this-javascript-jquery-syntax-work-function-window-undefined – user113716 2010-10-02 17:16:37
爲了記錄,在這段代碼中沒有jQuery,它只是純javascript。 – 2010-10-02 18:16:42
我想了解jQuery;不使用它,而是實際的jQuery源代碼,這是我第一次看到這個構造的地方。 – Elija 2010-10-03 08:09:11