関数本体の外側で定義されたものはグローバル変数、関数本体の内側で定義されたものはローカル変数です。ここでの定義は、var による宣言を指します。
JavaScript には暗黙的なグローバルの概念があり、宣言されていない変数はグローバル オブジェクト プロパティになることを意味します。例:
2 つの結果は同じであり、myname がグローバル変数であることを示しています。
では、暗黙的なグローバル変数と明示的に定義されたグローバル変数の間に違いはあるのでしょうか? 。答えは間違いなく「はい」です。以下の例を見てください:
上記の例からわかるように、関数外で var で定義された global_test1 は削除できません。また、var で定義されていない global_test2 と global_test3 は (関数本体内で作成されたかどうかに関係なく) 削除されます。
要約すると、関数の外で var を介して宣言されたグローバル変数は削除できませんが、暗黙的なグローバル変数は削除できます。
ここで注意すべき点: JavaScript には「ホイスティング」(一時停止/上位解析/事前解析) と呼ばれる動作があります。
例で説明してみましょう:
2 つのアラートの内容は同じだと思いますか? ?明らかに一貫性がありませんが、一貫していることは言うまでもありません。 。実際の出力は、「unknown」、「local_huming」です。
上記の例は
と同等です最初のアラートによって出力される myname は、あなたが考えているグローバル変数ではなく、それと同じスコープ (関数本体) 内のローカル変数です。宣言はされていないものの、そのように扱われます。これを「吊り上げ」といいます。
これで明らかになるはずです。関数本体で変数を使用し、後で再宣言すると、エラーが発生する場合があります。
書き込み仕様:
利点は次のとおりです:
1. 検索を容易にするために、すべてのローカル変数が関数の先頭で定義されます。
2. 変数が定義される前に使用された場合の論理エラーを防止します。JavaScript の変数宣言は理解できましたか? 最後のまとめも非常にわかりやすく書かれていますので、お見逃しなく。