簡體   English   中英

為什么在括號內使用此javascript函數?

[英]Why is this javascript function inside parenthesis?

我一直在尋找問題的解決方案,但發現這個問題https://stackoverflow.com/a/6962808/2724978

編寫的函數為:

(function loop() {
    var rand = Math.round(Math.random() * (3000 - 500)) + 500;
    setTimeout(function() {
            doSomething();
            loop();  
    }, rand);
}());

我的問題是,為什么現場括號內也要有()? 這讓我有些困惑,以前從未見過。

這是立即調用函數表達式的示例。

上面的鏈接將說明您需要了解的所有內容,但實際上發生了兩件事。

  • 括號內的換行告訴解析器將其中的所有內容都視為表達式。
  • 此后立即調用表達式(with () )可確保該表達式的范圍是密封的。

該代碼段創建了一個匿名函數,並立即對其進行調用。

不做父母的問題,

// This is a syntax error
function () {
  something;
}();

那是語法錯誤嗎? 因為該語句以'function'開頭,所以解析器希望跟隨函數名稱。 將所有內容包裝在括號中可以使在其中定義匿名函數在語法上合法。

// This is valid syntax
(function () {
  something;
}());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM