回答:
と
let = 1同じだと思いますvar let = 1
変数を宣言しますが、同じではありません。ここでの主な違いは、、、またはのような宣言を省略するvarとlet、constこの変数をグローバルに宣言することになります(以前に宣言した変数を設定していない場合)。これは、暗黙のグローバル -悪名高いコードのにおい - として知られているものです。
*ほとんどの場合、「グローバル」はwindowオブジェクトを指しますが、常にそうであるとは限りません。たとえば、Node.jsにはglobal、現在のモジュールを参照する独自の名前空間オブジェクトがあります。
もしそうなら、
let x = 2翻訳すべきではない1 x = 2のでエラーになりますか?
いいえ。宣言/キーワードのlet = 1ネイティブ機能を上書きしませんlet。同じ名前のグローバル変数を作成しただけです。(おそらく言うまでもありませんが、これを行わないでください!)
そして、あなたはこれを特に尋ねませんでしたが、取り組む価値があります:
なぜ私がやるさせて頂いております
let = 1が、ではありませんかvar = 1?
varは予約済みのキーワードです。
letで、将来、現在、それだけで予約していますことを意味し予約キーワード、strictモードでは。そのことを念頭に置いて、時間のテストに耐えるコードを作成しようとしている場合letは、識別子として使用しないでください。MDNがリンクされた記事で述べているように、私はそれが後で予約語になると想像します。
後方互換性。letは比較的新しいため、それを変数名として使用している古いスクリプトを壊さないようにする予約語ではありません。そのためlet、変数名として使用でき、としては使用できませんvar。
let = 1はvar let = 1と同じであると想定しています。
いいえ、それはむしろ等しくsomeothername = 1、非常に悪い暗黙のグローバル変数を作成します。
letキーワードなので、変数に名前を付ける(または名前を付ける)べきではありません。Chromeにそれをさせてくれたのには驚きました(笑)。