封裝匿名函數的語法
在JavaScript 中,封裝匿名函數是透過將函數括在編號中並立即執行來建立的:
(function(){ // code here })();
此語法用於避免變數和變數使全域範圍變得混亂函數。
為什麼有效: (function(){})();
當括號括住函數宣告時,結果會被計算為函數表達式。函數表達式允許使用可選名稱,因此該表達式可以在沒有名稱的情況下運行。
為什麼這不起作用:function(){}();
On另一方面,當沒有括號時,JavaScript 將其解析為函數宣告。函數宣告需要名稱標識符,在本例中缺少名稱標識符。
函數宣告與表達式
函數表達式可以命名或未命名,而函數宣告必須有名稱。
括號和上下文
括號表示所包含的程式碼是一個表達式。是函數宣告還是表達式取決於上下文。函數宣告可以出現在全域作用域或另一個函數體內,而函數表達式只能出現在表達式中。
歧義範例
0, function foo() {} // Function Expression function foo() {} // Function Declaration
在此範例中,解析器根據上下文決定它是函數宣告還是表達式。表達式可以出現在表達式中,而聲明只能出現在特定位置。
為什麼應避免區塊中的函數
區塊內的函數可能會導致意外行為由於變數範圍問題。例如:
if (true) { function foo() { alert('true'); } } else { function foo() { alert('false!'); } } foo(); // true? false? why?
以上是為什麼 JavaScript 中要用括號建立封裝的匿名函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!