ホームページ > 記事 > ウェブフロントエンド > JavaScript における変数の定義と保存の概要_javascript スキル
C や Java などのプログラミング言語とは異なり、JavaScript の変数は型指定されず、すべての変数定義でキーワード var が使用されます。
変数を定義した後に値が割り当てられていない場合、その変数の値は未定義になります。たとえば、上記のコードの 3 つの変数 a、m、n の値はすべて未定義です。
JS の変数には型がないため、次のように同じ変数に異なる型の値を割り当てることが完全に可能です。
同じ変数へのさまざまなタイプの代入に加えて、JavaScript では変数を繰り返し定義することもできます。これを行うと、最初の後の変数定義ステートメントは代入ステートメントと同等になります。
ECMAScript 標準の厳密モードでは、すべての変数定義で var キーワードを使用する必要があります。厳密モードが使用されていない場合、JS プログラムが未定義の変数に値を割り当てると、プログラムは JS グローバル オブジェクト内の変数と同じ名前のプロパティを作成します。つまり、新しいグローバル変数が作成されます。このアプローチは多くの問題 (例えば、複数の JS プログラム間のグローバル変数の汚染など) を引き起こし、後のメンテナンスに多大な問題をもたらすため、実際の開発プロセスでは、このアプローチはできるだけ避けるべきです。
変数の保存
定義された変数がグローバル変数であり、変数定義プロセスで var キーワードが使用されない場合、変数はグローバル オブジェクトの属性として存在し、このオブジェクトの対応する属性 (グローバルオブジェクト)、または delete キーワードを使用してグローバル オブジェクトから削除できます:
g を削除します;
console.log(this.f);//未定義
console.log(this.g);//未定義
JavaScript の関数呼び出しごとに、JavaScript は関数内で定義されたローカル変数を格納するローカル オブジェクトを作成します。関数内にネストされた関数が定義されている場合、JavaScript は関数の定義後にローカル オブジェクトを作成します。ローカル オブジェクト内のローカル オブジェクト。関数の場合、その内部にネストされた関数定義の層と同じ数のネストされたローカル オブジェクトの層が存在します。このローカルオブジェクトを「関数呼び出しオブジェクト」と呼びます(ECMAScript 3では「呼び出しオブジェクト」、ECMAScript 5では「宣言型環境レコード」に名前変更されましたが、個人的にはECMAScript 3の名前のほうがわかりやすいと思います)。
グローバル オブジェクトとは対照的に、JavaScript はこれらのローカル オブジェクト (関数呼び出しオブジェクト) にアクセスする方法を提供しません。したがって、開発者はこれらのローカル オブジェクトを操作できません。ただし、これらの関数呼び出しオブジェクトを理解することは、変数スコープやクロージャなど、JavaScript のいくつかの概念を理解するのに非常に役立ちます。