亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

函數閉包"}());"有區別嗎 和 })();

函數閉包"}());"有區別嗎 和 })();

達令說 2022-12-09 13:53:20
我檢測到我犯了一個錯誤并使用了“}());” 代替 ”})();” 并且代碼工作得很好,這就是它未被發現的原因。我想知道是否有區別?由于復制和粘貼,這個錯誤出現在很多單獨的腳本中,這讓我很擔心但很困惑,因為 ESLint 沒有抱怨。我試圖找到答案,但谷歌在搜索“}())時沒有給出任何結果;” 和“javascript 錯誤的函數閉包”給出的結果暗示它們是相同的,沒有區別。函數如下所示:const fname = (function() {   const cached_func = ...;   return function(p1, p2) {     ...     return cached_func.apply(this, arguments)  };}()); <- The error
查看完整描述

3 回答

?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

是的,區別在于將您的functionwithin(和)標記括起來會使您的語句返回所述函數,就好像您通過它的名稱調用它一樣。因此,您可以附加()并立即執行它。


以下兩個語句產生相同的結果:


// 1

function myFunction(){

    console.log("1")

}

myFunction();


// 2

(function myFunction(){

    console.log("1")

})()

不可能在右括號之后立即調用函數,因為它會導致錯誤Unexpected token ')':


function myFunction(){

    console.log("1")

}() // Uncaught SyntaxError: Unexpected token ')'


查看完整回答
反對 回復 2022-12-09
?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

將函數包裹在括號“()”中的目的是命名空間和控制成員函數的可見性。

它將您的代碼包裝在函數范圍內。

其中 '()' 后跟函數聲明是立即調用通常稱為 IIFE 的函數


查看完整回答
反對 回復 2022-12-09
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

這兩種形式在功能上是相同的。這純粹是您喜歡的風格選擇。

進一步閱讀這里


查看完整回答
反對 回復 2022-12-09
  • 3 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號