JavaScriptのクロージャ2024 年の最新の入門チュートリアル。このコースでは グローバル変数,例,例,変数のライフサイクル,カウンタージレンマ,例,例,JavaScriptのネストされた関数,例,JavaScriptのクロージャ,例,分析の例, について学習できます。

JavaScriptのクロージャ

JavaScript変数は、ローカルまたはグローバル変数とすることができます。

プライベート変数は、クロージャを使用することができます。


グローバル変数

関数は、次のような内部関数によって定義された変数にアクセスすることができ?:

ファンクションてmyFunction(){
するvar A = 4;
* aを返します。
}

»をお試しください

この関数はまた、このようなとしての機能に定義された変数、外部からアクセスすることができます。

するvar A = 4;
ファンクションてmyFunction(){
* aを返します。
}

»をお試しください

バックの例は、 グローバル変数です。

Webページでは、グローバル変数ウィンドウオブジェクトに属します。

グローバル変数は、ページ上のすべてのスクリプトで使用することができます。

最初のは、Aは、 ローカル変数です。

ローカル変数は、その内部機能を定義するために使用することができます。 他の関数やスクリプトコードでは使用できません。

同じ名前のでもグローバルとローカル変数は、彼らはまた、2つの異なる変数です。 1を変更し、それが他の値には影響しません。

ノート あなたはvarキーワードを使用して変数を宣言しない場合、それはそれは関数内で定義されているにもかかわらず、グローバル変数です。


変数のライフサイクル

グローバル変数のスコープはつまり、JavaScriptのプログラムを通じて、グローバル変数はどこにでもあり、グローバルです。

関数内で宣言された変数で、関数の内部でのみ動作します。 これらの変数は、スコープ内のローカル、ローカルです;関数のパラメータは、機能だけの仕事の内部で、ローカライズされています。


カウンタージレンマ

あなたは、いくつかの数値の統計を想像したい場合は、カウンタは、機能のすべてで利用可能です。

あなたはグローバル変数を使用することができ、機能は、カウンタがインクリメントされ設定します。

VARカウンタ= 0;

機能の追加(){
カウンタ+ = 1;
}

追加();
追加();
追加();

//カウンタは現在3です

»をお試しください

カウンタ値の変更は、追加()関数の実装で発生しました。

しかし、問題は、ページ上の任意のスクリプトが()関数を追加するためのコールがない場合でも、カウンタを変更することができますされています。

私はカウンター内の関数を宣言すると関数を呼び出していない場合は、カウンタの値を変更しません。

機能の追加(){
VARカウンタ= 0;
カウンタ+ = 1;
}

追加();
追加();
追加();

//意図は出力3にあるが、それは、出力は1ではありませんでした!

»をお試しください

上記のコードが正しく出てこないだろう、私は()関数を追加するために呼び出すたびに、カウンタが1に設定されます。

JavaScriptのインライン機能は、この問題を解決することができます。


JavaScriptのネストされた関数

すべての関数は、グローバル変数にアクセスすることができます。

実際には、JavaScriptで、すべての機能は、スコープの床の上にそれらにアクセスすることができます。

JavaScriptは、ネストされた関数をサポートしています。 ネストされた関数は、関数の層の上に変数にアクセスすることができます。

この例では、ネストされた関数プラス()親関数のカウンタ変数にアクセスできます。

機能の追加(){
VARカウンタ= 0;
機能プラス(){カウンタ+ = 1;}
PLUS();
カウンターを返します。
}

»をお試しください

我々はカウンターの窮状に対処できるように、我々は、 プラス()関数にアクセスすることができます。

我々はまた、一度だけ、そのカウンタ= 0を確認する必要があります。

私たちは、閉鎖を必要とします。


JavaScriptのクロージャ

自身が行う関数呼び出しを覚えていますか? この関数は何でしょうか?

varの各アド=(関数(){
VARカウンタ= 0;
return関数(){返却カウンター+ = 1;}
})();

追加();
追加();
追加();

3 //カウンタ

»をお試しください

分析の例

変数が関数の戻り値は自分自身を呼び出す示して単語を追加ます

自己呼び出し元の関数は一度だけ実行されます。 カウンタをゼロに設定します。 そして、関数式に戻ります。

使用の関数として変数を追加します。 大部分は、機能層のカウンタの範囲にアクセスすることができることです。

これは、JavaScriptのクロージャと呼ばれています 関数が可能となるように、それはプライベート変数があります。

匿名関数の保護範囲は、唯一の追加方法によって改変することができるカウンター。

ノート クロージャはレイヤ機能が閉じられた場合でも、関数内の一つの関数スコープ変数にアクセスできます。
JavaScriptのクロージャ
10/30