let と const で宣言された変数はコード ブロック内でのみ有効です
{ let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1
変数の昇格はありません
変数は宣言後に使用する必要があります。そうでないとエラーが報告されます
var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; }
重複した宣言は許可されません
// 报错 function () { let a = 10; var a = 1; }
ブロックレベルのスコープ
function f() { console.log('I am outside!'); } (function () { if(false) { // 重复声明一次函数f function f() { console.log('I am inside!'); } } f(); }()); //I am inside! ES5 函数提升 //I am outside! ES6 块级作用域
constコマンド
一度宣言されると、定数の値は変更できません
。宣言された場合は、すぐに初期化する必要があり、将来
let コマンド、const コマンド、class コマンドで宣言されたグローバル変数はグローバル オブジェクトの属性ではありません
var a = 1; // 如果在Node的REPL环境,可以写成global.a // 或者采用通用方法,写成this.a window.a // 1 let b = 1; window.b // undefined
次に紹介しますES6 の const コマンドは別途必要です
これは常に ecma に基づいています。 js には定数の概念がありませんでしたが、es6 はこの欠陥を補いました
上記の例は、基本的な定数を宣言しています。初期値を変更しようとすると、エラーが報告されます。参照型の値の場合も同様ですが、次のような点に注意する必要があります。
普通にエラーを報告します。何も問題はありません。もう一度見てください:const foo='foo'; foo='bar';//TypeError: Assignment to constant variable.
const foo=[]; foo=[1];//Assignment to constant variable.