1. >>> const a = 2
2. >>> var a = 3
3. >>> a = 4
4. >>> a // print 2
操作ライン 3 が許可されているのはなぜですか? const は、キーワードがない場合よりも「グローバル」に見えます...
1. >>> const a = 2
2. >>> var a = 3
3. >>> a = 4
4. >>> a // print 2
操作ライン 3 が許可されているのはなぜですか? const は、キーワードがない場合よりも「グローバル」に見えます...
これは、どのようにconst
機能するか(または機能しないか) です。
宣言されている関数に対してグローバルまたはローカルにできる定数1を作成します。定数は、同じスコープ内の関数または変数を持つ変数 [.. および名前を共有できない] と同じスコープ規則に従います。
Firefox [..] 2 [再割り当てとは異なる] 定数を再宣言すると、TypeError がスローされます。定数[..]に別の値を割り当てた場合、主要なブラウザーのいずれも通知やエラーを生成しません2,3が、Firefox と Chrome (少なくともバージョン 20 以降) でのみ再割り当てが失敗します。
const
は ECMAScript 5 仕様の一部ではなく、JavaScript 1.5 セマンティクスはECMAScript 6 で再定義されることに注意してください。
動作は、サポートおよび再宣言/再割り当てのセマンティクスに関して、ブラウザーの実装によって異なります。
1 IE 9 で使用const a = 2
すると、
"構文エラー"
2 FF 14 ではconst a = 2; var a = 3; a = 4; a
、 を 1 つのプログラムとして評価すると、
TypeError: const a の再宣言
これは、REPL で一度に 1 行ずつ実行するのとは異なります。これは、が上に持ち上げられているためであり、const は「同じスコープ内の関数または変数と名前を共有できない」ためだと思われます。var
const
3 Chrome 21 では、const a = 2; var a = 3; a = 4; a
警告やメッセージなしで 2 と評価されます。