一文で要約: クロージャとは何ですか?

零下一度
リリース: 2017-06-26 15:47:40
オリジナル
2373 人が閲覧しました

一言で言えば、クロージャはスコープ内の外部バインディングをキャプチャする関数です。

正式な定義: 多くの変数とこれらの変数にバインドされた環境を持つ式 (通常は関数)。これらの変数は式の一部とも呼ばれるためです。

自由変数とクロージャの関係: 自由変数はクロージャの作成時に閉じられます。

内部ロジックは

自由変数: 関数内に他の関数がある場合、これらの内部関数は外部関数で宣言された変数にアクセスできます (これらの変数は自由変数と呼ばれます)。

クロージャの 3 つの特徴:

1. 関数のネストされた関数

2. 関数内で外部パラメーターと変数を参照できます

3. パラメーターと変数はガベージ コレクション メカニズムによって再利用されません

クロージャの欠点は、メモリに常駐するため、不適切に使用するとメモリリークが発生しやすいことです。

1.メモリ内に長期間常駐可能2. グローバル変数の汚染を避ける

3. プライベートメンバーの存在

function fn(){//Closure fn()var a = 10 ;function f1(){a++;console.log(a);}return f1;}var f = fn();f(); f();

闭包解决インデックス值问题:


メモリ リークの問題:

Ie の JS オブジェクトと DOM オブジェクトは異なるガベージ コレクション メカニズムを使用するため、クロージャーは IE でメモリ リークを引き起こします。つまり、メモリ内に存在する要素を破棄できません。

<頭>
charset="UTF-8">
<span class="html-tag">
  • 1
  • 2
  • 3
  • 4
  • function Closure(){
    var oDiv = document.getElementById("div1");//oDiv は使用後もメモリに残ります
    oDiv.onclic = function(){
    alert("oDiv.innerHTML");//ここで oDiv を使用するとメモリリークが発生します
    };

    }

    closure();

    //メモリリークを避けるために oDiv を逆参照 function Closure(){ var oDiv = document.getElementById("div1");// oDiv が使い果たされた後は常に存在しますMemory var test = oDiv.innerHTM oDiv.onclic = function(){alert(test);//ここで oDiv を使用するとメモリ リークが発生します };

    以上が一文で要約: クロージャとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート