[英]Is there a difference between function closure “}());” and })();
我檢測到我犯了一個錯誤並使用了“}());” 代替 ”})();” 並且代碼工作得很好,這就是它未被檢測到的原因。 我想知道有沒有區別? 由於復制和粘貼,這個錯誤出現在很多單獨的腳本中,這讓我很擔心但很困惑,因為 ESLint 沒有抱怨。 我試圖找到答案,但在搜索“}());”時谷歌沒有給出任何結果並且“javascript wrong functionclosure”給出的結果暗示它們都是相同的,沒有區別。 函數如下所示:
const fname = (function() {
const cached_func = ...;
return function(p1, p2) {
...
return cached_func.apply(this, arguments)
};
}()); <- The error
是的,不同之處在於將您的function
在(
和)
標記內會導致您的語句返回所述 function,就好像您用它的名字來稱呼它一樣。 因此,您可以 append ()
並立即執行它。
以下兩個語句產生相同的結果:
// 1
function myFunction(){
console.log("1")
}
myFunction();
// 2
(function myFunction(){
console.log("1")
})()
不能在右括號后立即調用 function,因為它會導致Unexpected token ')'
錯誤:
function myFunction(){
console.log("1")
}() // Uncaught SyntaxError: Unexpected token ')'
這兩個 forms 在功能上是相同的。 這純粹是您喜歡的風格選擇。
在此處進一步閱讀
將 function 包裝在括號“()”中的目的是命名空間和控制成員函數的可見性。
它將您的代碼包裝在 function scope 中。
其中 '()' 后跟 function 聲明是立即調用 function 這通常稱為 IIFE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.