javascript即座に呼び出される関数表現N種の書き方(第二編)

3933 ワード

前のブログで、関数宣言を関数表現に変換するのに最も一般的な書き方について述べました.括弧()を通して匿名関数宣言を関数式に変換することです.
言外の意味は他にもあります.覚えておきます.関数宣言と関数表現間の曖昧さを解消する方法は、すべて解析器によって正確に識別されます.それらは5種類に分けられます.10種類以上です.
(function(){})(); //                  

(function(){});   //        

[function()()];



//     

~function(){};

+function(){};

-function(){};

!function(){};  //      3   



//   

delete function() {}();

typeof function() {}();

void function() {}();

new function() {}();

new function() {};



var f = function() {}();



1, function() {}();

1 ^ function() {}();

1 > function() {}();

1 && function(){}(); 
//...
もちろん、それらの間にも性能の違いがあります.newは常に遅く、+−chromeの速度は驚くほど速く、よく見られます.各ブラウザでの表現も上乗になります.また+-は()より1文字少ないです.
私たちはよくプラグインの前にプラグインが追加されるのを見ます.セミコロン、私の理解は以下の通りです.
glue()

//
(function(){ //..... ; })();
//Uncaught TypeError: undefined is not a function
glue()関数とプラグインを単独で実行するのは間違いないですが、glue()とプラグインが何らかの方法で結合されるとエラーが発生します.だから私達はこのように書くことができます.
;(function(){

//      

})();

--------------------------

;!function(){

//      

}();

---------------------------

;+function(){

//      

}();

----------------------------

//  
以上の学会は詰め物として(~><~)を使うことができて、同時に二度と他の人のコードを見て分からないために悩むことはできませんでした!