即時実行関数IIIFEについて

1385 ワード

今日は簡単に話しに来ました.前に書いておきます.IIIFEがとても多いです.まず、javascriptを見に来ます.
(function(){

})()
これはつまりIIFE( )です.これはみんな会ったことがあるはずですが、みんなは初めてこれを見た時、このように書いて何の用途があると思いますか?普通はどこで使いますか?
IIIIFはどんな用途がありますか
1.コードは常にIIIIIIIFFE(Immedia tely-Invoked Function Expression)に包まれ、独立して遮断された定義ドメインを作成する.この取り組みは全体の名前空間の汚染を防ぐことができる.グローバルの名前空間を汚染しないというのは、IIIFが新たな機能領域を作ったからです.本当の業務コードはその中に封入されています.自然にグローバルオブジェクトに触れることができなくなります.全体のオブジェクトが必要なら、パスをIIIIIIFEに渡します.
(function (global) {
    //    ,global        
})(this)    //      ,this    window   
2.IIIIIFはまた、あなたのコードが他のグローバル名前空間のコードによって簡単に変更されないことを確認します(i.e.サードパーティライブラリ、window参照、上書きされた未定義のキーワードなど).
IIIIFは普通どこで使いますか?
1.いつでも、新しい閉じた定義ドメインを作成したいなら、IIIFEを使います.干渉を避けるだけでなく、内部に存在しています.実行後すぐに釈放します.
2.すべてのスクリプトファイルはIIFから開始することを推奨します.
普通はIIIFEはどう書きますか
おすすめ
(function(){
  'use strict';

  // Code goes here

}());
(function($, w, d){
  'use strict';

  $(function() {
    w.alert(d.querySelectorAll('div').length);
  });
}(jQuery, window, document));
ES 6ではIIIFEの代わりにletを使用します.
ES 6は、変数を宣言するためにletコマンドを追加しました.その使い方はvarに似ていますが、宣言された変数はletコマンドがあるコードブロック内でのみ有効です.私達があるコードブロックの中でしか変数を使っていないなら、letを使ってもいいです.IIIIFEを使う必要はありません.
{
 let private = 1;
}
console.log(private); //     ReferenceError