JavaScript変数のグローバルスコープ、ローカルスコープ、およびブロックレベルスコープの理解

8月のアップデートチャレンジに参加してから14日目です。イベントの詳細については、8月のアップデートチャレンジをご覧ください。

JavaScript変数は、データ値を格納するコンテナーです。JavaScript変数のスコープは、グローバルスコープ、ローカルスコープ、およびブロックレベルのスコープに分けることができます。すべてのJavaScript 変数は一意の名前で識別する必要があります

これらの一意の名前は識別子と呼ばれます。

識別子は、短い名前(xやyなど)、またはよりわかりやすい名前(age、sum、totalVolume)にすることができます。

変数名(一意の識別子)を作成するための一般的な規則は次のとおりです。

  • 名前には、文字、数字、アンダースコア、ドル記号を含めることができます
  • 名前は文字で始まる必要があります
  • 名前は$と_で始めることもできます(ただし、このチュートリアルではそれを行いません)
  • 名前では大文字と小文字が区別されます(yとYは異なる変数です)
  • 予約語(JavaScriptキーワードなど)を変数名として使用することはできません

ヒント:JavaScript識別子では大文字と小文字が区別されます。

 1.グローバル変数

グローバル変数:関数を除く他の場所でvarを使用して宣言された変数。この変数はグローバル変数であり、ページのどこでも使用できます。

グローバル変数の場合、ページが閉じられていない場合、変数によって占有されていたメモリは解放されず、スペースを占有してメモリを消費します。

var lut = 520;
console.log(lut); // 520
复制代码

2.ローカル変数

ローカル変数:関数内で定義された変数はローカル変数であり、外部で使用することはできません。

function lut() {
  var luzp = 410;
}
lut();
console.log(luzp);  // luzp is not defined  报错
复制代码

 3.ブロックスコープ

ブロックレベルのスコープ:中括弧のペアはブロックと見なすことができます。この領域で定義された変数はこの領域でのみ使用できますが、jsのこのブロックレベルのスコープで定義された変数も外部で使用できます。
注:jsには、関数を除いてブロックレベルのスコープはありません。

{
  var lut = 520;
  console.log(lut); // 520
}
console.log(lut);

if(true){
  var lut = 1314;
}
console.log(lut);

for(var i = 0;i < 5; i++){
  var lut = 520;
}
console.log(lut); // 520

var i = 0;
while (i < 5){
  var lut = 1314;
  i++;
}
console.log(lut); // 1314
复制代码

4.暗黙のグローバル変数

暗黙のグローバル変数:varなしで宣言された変数は、暗黙のグローバル変数と呼ばれます。

function lut() {

date = 410;//是隐式全局变量

}

lut();

console.log(date); // 410 函数运行结束还可以访问
复制代码

知らせ:

1.グローバル変数は削除できず、暗黙のグローバル変数は削除できます

2. varを使用して変数を定義しても削除されず、varを削除できません 

3.変数を定義するときは、可能な限りvarを使用するようにしてください 

var luzp = 27;
lut = 23;
delete luzp; //把luzp删除了
delete lut; //把lut删除了
console.log(typeof luzp); // number  不能被删除
console.log(luzp+10);     // 37
console.log(typeof lut);  // undefined 可被删除
复制代码

おすすめ

転載: juejin.im/post/6996520546556968991