2016-10-09 37 views
3

恐ろしいタイトルで申し訳ありませんが、{}())と{})の違いは何ですか?

私は

(function() { 
    return false; // logs false 
}()); 

and 

(function() { 
    return false; // Also returns false 
})(); 

の違いは、どちらも私のコンソールで同じ結果を与えるように見えるが、私は違いがなければならないと確信している、ある誰かが言うことができるものにとして主に好奇心が強いです私はその違いと、なぜあなたは他のものを使うのでしょうか?

答えて

3

他の回答のようにあなたはES2015にしている場合は、何の機能的な違い

は、しかし、ありませんし、

(() => { 
    return false; // logs false 
    }()); 
:矢印関数スタイルの生命維持

(() => { 
    return false; // logs false 
})(); 

作品、しかし、このバージョンを使用

はありません - jsエンジンは括弧内にあります)

1

違いはありません.JAPコードでIIFE(Immediately Invoked Function Expression)を書くには2通りの方法があります。どちらを選ぶかは、大会の選択です。

(あなたは生命維持のJavaScriptでの詳細情報が必要な場合は、偉大なSO hereがあります。)

0

IIFEが関数の実行コンテキストを使用して「プライバシー」を作成するために、次の2つのパターンのどちらかを使用できます。

(function(){ /* do something */ }()); // Douglas Crockford recommends 

(function(){ /* do something */ })(); // This way works as well 

なぜですか? 括弧の理由は、関数式と関数宣言を区別するためで、パーサーが既に式を必要とするときには削除できます。

割り当てを行うときは、それらを使用してコンベンション状態をコード化することをお勧めします。

+0

'ダグラス・クロフォードは、なぜ?'() '))()で最終的に彼が犬のボールのようにぶらぶらしているように思うから - 真剣に、彼の言葉 - あまりにも悪いES2015 +作業! –

+0

はい、私は大会の状態を挙げてお話しました。あなたはポイントを得ました;) – Abs

関連する問題