まず、let は ES6 のものであることに注意してください。少なくとも IE10 より前の IE ブラウザーと互換性があるので注意してください。それでは、JavaScript で let ステートメントを使用してスコープを宣言する方法を見てみましょう
構文
let variable1 = value1
パラメータvariable1
宣言される変数の名前。
value1
変数に割り当てられる初期値。
備考 let ステートメントを使用して、スコープが宣言されているブロックに限定される変数を宣言します。宣言時に変数に値を割り当てることも、スクリプトの後半で変数に値を割り当てることもできます。
let で宣言した変数は宣言前に使用することはできません。使用しないとエラーが発生します。
変数が let ステートメントで初期化されていない場合は、JavaScript 値 undefine が自動的に割り当てられます。
例:
var l = 10; { let l = 2; // At this point, l = 2. } // At this point, l = 10. // Additional ways to declare a variable using let. let index; let name = "Thomas Jefferson"; let answer = 42, counter, numpages = 10; let myarray = new Array();
ブロックレベルのスコープ
for(var i = 0; i < 10; i++){} console.log(i); //10 for(let j = 0; j < 10; j++){} console.log(j); //"ReferenceError: j is not defined
変数のプロモーションはありません
console.log(a); // 输出undefined console.log(b); // 报错ReferenceError console.log(c); // 报错ReferenceError var a = 2; let b = 2;
未定義とReferenceErrorの違いに注意してください
一時デッドゾーン(TDZ)現在の値を入力している限りブロック レベルのスコープ、すべて 使用されている変数はすでに存在しますが、宣言される前はデッド ゾーンにあり、操作できません。
注: typeof は 100% 安全な操作ではなくなりました
typeof x; // ReferenceError typeof y // undefined let x;
重複した宣言は許可されません
let x = 1; let x; // "SyntaxError: Identifier 'x' has already been declared var y = 2; var y = 3; // y = 3
ブロックレベルのスコープ
// 匿名函数写法 (function () { var tmp = ...; ... }()); // 块级作用域写法 { let tmp = ...; ... }
ES5 の厳密モードでは、関数はトップレベルのスコープでのみ宣言できると規定されており、関数、その他の状況のステートメント (if コード ブロックやループ コード ブロックなど) はエラーを報告します。
// ES5 'use strict'; if (true) { function f() {} // 报错 }
ES6 ではブロックレベルのスコープが導入されているため、この状況は関数がブロックレベルのスコープで宣言されているためエラーは報告されないため理解できますが、ブロックを構成する中括弧が欠落しているわけにはいきません
// 报错 'use strict'; if (true) function f() {}
宣言されたグローバル変数はウィンドウではなくなりました
"use strict"; var a = 1; console.log(window.a) // 1 let b = 1; console.log(window.b) // undefined
の属性をまとめたものです。今後皆さんのお役に立てれば幸いです。
関連記事:
javascript関数の深い理解と実践的な使い方(コード添付)
基本的なJavaScriptスキル(画像とテキストのチュートリアル、詳細な回答)
以上がlet ステートメントを使用して JavaScript でスコープを宣言する (画像とテキストのチュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。