キーワードvarとletの違い

webstormを使用してフロントエンドコードを記述しているときに、var変数を使用するとletに変更するように求められたので、2つの違いを確認して記録しました。

1. VarはES5仕様に属し、ES6仕様に属します

    

2. Varには前処理メカニズムがありますが、letにはありません。前処理メカニズムは事前に宣言するとしばしば言われます

ES6には、ローカル変数を宣言するletコマンドが追加されました。その使用法はvarに似ていますが、宣言された変数はletコマンドが配置されているコードブロックでのみ有効であり、一時的なデッドゾーン制約があります。

まず、varの共通変数のプロモーションに関するインタビューの質問を見てみましょう。

题目1:
var a = 99;            // 全局变量a
f();                   // f是函数,虽然定义在调用的后面,但是函数声明会提升到作用域的顶部。 
console.log(a);        // a=>99,  此时是全局变量的a
function f() {
  console.log(a);      // 当前的a变量是下面变量a声明提升后,默认值undefined
  var a = 10;
  console.log(a);      // a => 10
}

// 输出结果:
undefined
10
99

3.スコープは異なり、varはグローバルスコープ、letはブロックレベルのスコープです。

ES6より前は、変数を宣言するためにvarを使用していました。JSには関数レベルとグローバルスコープしかなく、ブロックレベルのスコープはないため、{}はvarで宣言された変数のアクセススコープを制限できません。スコープは縮小されますが、変数の使用がより安全になります。
次に例を示します。

{ 
  var i = 9;
} 
console.log(i);  // 9

ES6の新しいletでは、ブロックレベルのスコープで変数を宣言できます。

{ 
  let i = 9;     // i变量只在 花括号内有效!!!
} 
console.log(i);  // Uncaught ReferenceError: i is not defined

おすすめ

転載: blog.csdn.net/qq_42910468/article/details/108078406