Latest web development tutorials
×

JavaScript コース

JavaScript コース JavaScript 簡単な紹介 JavaScript 使用法 JavaScript 輸出 JavaScript 文法 JavaScript ステートメント JavaScript ノート JavaScript 変数 JavaScript データの種類 JavaScript オブジェクト JavaScript 関数 JavaScript スコープ JavaScript イベント JavaScript 文字列 JavaScript 演算子 JavaScript 比較します JavaScript If...Else JavaScript switch JavaScript for JavaScript while JavaScript Break & Continue JavaScript typeof JavaScript 型変換 JavaScript 正規表現 JavaScript エラー JavaScript デバッギング JavaScript 可変リフト JavaScript strictモード JavaScript 不適正使用 JavaScript フォーム認証 JavaScript 予約済みキーワード JavaScript JSON JavaScript void JavaScript コードの仕様

JS 関数

JavaScript 関数定義 JavaScript 関数の引数 JavaScript 関数呼び出し JavaScript クロージャ

JS HTML DOM

DOM 簡単な紹介 DOM HTML DOM CSS DOM イベント DOM EventListener DOM 要素

JS 応用チュートリアル

JavaScript オブジェクト JavaScript Number JavaScript String JavaScript Date JavaScript Array JavaScript Boolean JavaScript Math JavaScript RegExp オブジェクト

JS ブラウザ BOM

JavaScript Window JavaScript Window Screen JavaScript Window Location JavaScript Window History JavaScript Navigator JavaScript ポップ JavaScript 時間指定イベント JavaScript Cookies

JS 倉庫

JavaScript 倉庫 JavaScript テスト jQuery JavaScript テスト Prototype

JS 例

JavaScript 例 JavaScript Objectインスタンス JavaScript ブラウザのオブジェクトインスタンス JavaScript HTML DOM 例 JavaScript サマリー

JS リファレンスマニュアル

JavaScript オブジェクト HTML DOM オブジェクト

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のクロージャと呼ばれています 関数が可能となるように、それはプライベート変数があります。

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

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