ご存知のとおり、ES5 より前の JavaScript 言語には関数スコープとグローバル スコープしかなく、var で宣言された変数には変数の昇格もあり、混乱を招きました。まず ES5 の var 宣言を確認してから、let と const を比較してみましょう。
var
var宣言関数のスコープとグローバルスコープ。
コードで体験してみましょう:
function getName() { if (1 + 1 === 2) { var name = 'xixi'; } console.log(name); } getName();//xixi
C 言語や Java 言語では、name は if ブロック内でのみ使用する必要がありますが、if ブロックの外からもアクセスできます。これは、そうでないタイプの JS です。ブロックレベルのスコープを持ちます。この欠点は、for ループでは非常に明白です:
for (var i = 0; i < 10; i ++) { // ... } console.log(i);// 10
var i の本来の目的は、配列の走査などに使用される一時変数 i を宣言することです。for ループの外ではアクセスすべきではありませんが、現在はアクセスできるようになりました。 by you めんどくさいって言ってるのか、そうじゃないのか?より優れたプログラマーは、ブロックレベルのスコープをシミュレートするために即時実行関数を使用します。本来、私は注意を払い、同じ変数名を使用しないように努めていました。
以上がES6 ブロックレベルのスコープの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。