『JQuery技術内幕』読書ノート——自己呼び出し匿名関数剖析

1899 ワード

Javascript言語の自己呼び出し匿名関数のフォーマットは次のとおりです.
(function(){
//do somethings
})();

他にも2つの等価な書き方があります.
//     
(function(){
//do somthings
}());
//     
!function(){
//do somethings
}();

JQueryは最初の書き方を採用しています
(function(window,undefined){
    //...
})(window);

自己呼び出し匿名関数は、グローバルおよび他のクラスライブラリの役割ドメインとは別に、変数を汚染しない独立した役割ドメインを作成します.
一、JQueryはwindowオブジェクトの最もパラメータを関数ドメインに伝達し、それによってwindowオブジェクトをJQuery関数ドメインの局部変数にする.
  1.ローカル変数へのアクセスは、グローバル変数へのアクセスよりもコストがかかります.JQueryがローカルwindowオブジェクトにアクセスする場合、役割ドメインチェーンを介してグローバルに戻る必要がなく、より迅速にwindowオブジェクトにアクセスできます.この点は後でクラスライブラリを開発する際に良い最適化方式である.
  2.コード圧縮最適化.圧縮されたコードは次のとおりです.
(function(a,b){})(window);

二、JQueryの二番目のパラメータはundefinedです.
nullとは異なり、undefinedはデータ型ではなく、事前定義されたグローバル変数(JavaScript権威ガイド44ページ参照)であり、変更可能である(すべてのブラウザでサポートされているわけではない).JQueryはundefinedをパラメータとして関数ドメインに伝達し、一方ではコード圧縮最適化のためである.一方,undefinedを修正する行為がJQuery役割ドメインに影響を及ぼすことを防止するため,JQuery役割ドメイン内でundefinedがundefinedであり,修正された他の値ではないことを確保する.
三、自己呼び出し匿名関数のセミコロンは省略できない.
JavaScriptでは、複数行の文は1行の文の末尾のセミコロンを省略できますが、自己呼び出し匿名関数の場合は、その前のセミコロンでも自身の末尾のセミコロンでも省略しないほうがいいです.省略するとエラーが発生する可能性があります(特に古いブラウザ).