2017-09-24 141 views
-1

我得到了一個解釋,以免污染全局變量環境。 但是,爲什麼不直接聲明正常的函數並在最後調用它呢?爲什麼JQuery使用IIFE(立即調用函數表達式)

function$(){ some awesome code here with variables declared with var keyword} 
$(); 
+3

_「爲什麼不只是聲明正常的函數」_因爲聲明一個只有一件事情的正常函數(setup jQuery)本身就會污染全局範圍 –

+1

重複的https://stackoverflow.com/questions/46339735/ javascript-self-executed-functions-why-to-use-them-if-i-can-create-local-sc –

回答

1

當你創建像一個函數:

function doSomething() { 
    ... 
} 

window下創建的,它是作爲window.doSomething訪問。因此,即使函數內部的變量不在外泄之外,函數名稱本身也會污染全局名稱空間。因此它可能會與開發人員可能希望使用的自定義函數衝突。

而是,當您使用IIFE並在jQuery$下公開功能時,全局名稱空間保持清晰。

+0

好的。我仍然沒有完全明白。你能進一步詳細說明它可能與什麼樣的定製功能相沖突嗎?自定義函數是什麼意思?無論如何jQuery或$暴露,所以它將與全局命名空間中同名聲明的變量衝突 – pareshrz

+1

說jQuery使用函數'doSomething',但不知道你還需要創建一個新的函數'doSomething'。它會覆蓋jQuery的'doSomething'功能。結果它會在你的程序中造成不必要的錯誤。在jQuery名稱空間內使用該函數,您的'doSomething'將不會覆蓋它。 – Nisarg

相關問題