これletは、JavaScriptで変数を定義する予約キーワードであることはわかっています。
var let = 2;
console.log(let); // return 2
なぜこれはエラーではないのですか?
これletは、JavaScriptで変数を定義する予約キーワードであることはわかっています。
var let = 2;
console.log(let); // return 2
なぜこれはエラーではないのですか?
回答:
let strictモードでは予約語にすぎません。
'use strict';
var let = 5;
キャッチされないSyntaxError:予期しない厳格モードの予約語
これは、ブラウザが一般的に下位互換性を何よりも優先するためです。が、letES2015に導入された(そしてその使用はいつか前に、その後、予見された)、使用前にスクリプトlet必要に応じて、変数名としては、仕事を続けるでしょう。たとえば、スクリプトが2008年に作成された場合:
var let = 2;
console.log(let);
その後、2020年も引き続き機能します。
非常に同様の理由で、asyncとawaitもされている変数名として許可。
let厳密モードでエラーを使用する理由について-厳密モードは、2009年にES5で導入されました。当時、言語設計者は、変数を宣言するための新しいキーワードの使用が将来的に可能であることに気付きましたが、まだ着手しておらず、ES6はまだ長い道のりでした。ES5が登場すると、スクリプトの作成者はコードをわかりやすくするために厳密モードにオプトインし、サイレントエラーを明示的なエラーに変更できます。let変数の宣言にはまだ使用できませんでしたが、strictモードで変数名としてそれを禁止すると、strictモードを選択する将来のスクリプトの可読性が向上し、既存のスクリプトも破損しなくなりました。