この記事の例では、JavaScript の変数宣言の方法を説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです。
変数は、js で使用する前に宣言する必要があります。変数はキーワード var を使用して宣言されます。
var 宣言文で変数の初期値が指定されていない場合、変数の値は不定となります。
JS 変数の宣言時に変数の型を指定する必要はありません。任意のデータ型を使用できます。
var ステートメントを使用して変数を繰り返し宣言することは合法であり、無害です。繰り返される宣言に初期化子がある場合、それは単純な代入ステートメントと何ら変わりません。
宣言されていない変数を読み取ろうとすると、js はエラーを報告します。 ECMAScript5 の厳密モードでは、宣言されていない変数に値を代入するとエラーが報告されます。ただし、歴史的に、非厳密モードでは、宣言されていない変数に値を代入すると、js は実際に同じ名前のプロパティを作成します。グローバルオブジェクトであり、正しく宣言されたグローバル変数のように動作するようです。これは、グローバル変数を宣言しなくても済むことを意味しますが、これは多くのバグを引き起こす可能性がある悪い習慣であるため、常に var を使用して変数を宣言することをお勧めします。
関数本体では、同じ名前のローカル変数がグローバル変数を上書きします。
var ステートメントを記述せずにグローバル スコープでコードを記述することもできますが、ローカル変数を宣言する場合は var ステートメントを使用する必要があります。次のコードを参照してください:
scope = "global"; function foo(){ scope="local" //fk!我们刚刚修改了全局变量!!! }
C のようなプログラミング言語では、中括弧内の各コードには独自のスコープがあり、変数は宣言されているコード セクションの外には表示されません。 js ではブロックレベルのスコープですが、代わりに関数スコープが使用されます。変数は、変数が宣言されている関数本体と、この関数本体がネストされている関数本体 (内部ネストか外部ネストか)
で定義されます。
js の関数スコープは、関数内で宣言されたすべての変数が関数本体内で常に表示されることを意味します。つまり、変数は宣言前でも使用できることを意味します。 js のこの機能は、非公式には宣言ホイスティングと呼ばれています。つまり、js 関数で宣言された (ただし割り当てられていない) すべての変数が関数本体の先頭に「進められ」ます。
var scope = "global"; function f(){ console.log(scope); //输出"undefined"而不是"global" var scope = "local"; //变量在这里赋初始值,但变量在函数体内任何地方均是有定义的 console.log(scope); //输出"local"
上記のコードは次と同等です:
function f(){ var scope; console.log(scope); scope = "local"; console.log(scope); }
js グローバル変数を宣言すると、実際にはグローバル オブジェクトのプロパティが定義されます。
var を使用して変数を宣言する場合、作成される属性は構成できません。つまり、delete 演算子で削除することはできません。ただし、strict モードを使用せずに宣言されていない変数に値を割り当てると、js は自動的にグローバル変数を作成します。この方法で作成された変数は、グローバル オブジェクトの通常の構成可能なプロパティであり、削除できます:
var x = 1; y = 2; this.z = 3; //同上 delete x; //返回false,无法删除变量 delete y; //返回true,变量被删除 delete this.z //同上
この記事が皆様の JavaScript プログラミング設計に役立つことを願っています。