JavaScriptの予約キーワードが変数名として許可されているのはなぜですか?


回答:


25

let strictモードでは予約語にすぎません。

'use strict';
var let = 5;

キャッチされないSyntaxError:予期しない厳格モードの予約語

これは、ブラウザが一般的に下位互換性を何よりも優先するためです。が、letES2015に導入された(そしてその使用はいつか前に、その後、予見された)、使用前にスクリプトlet必要に応じて、変数名としては、仕事を続けるでしょう。たとえば、スクリプトが2008年に作成された場合:

var let = 2;
console.log(let);

その後、2020年も引き続き機能します。

非常に同様の理由で、asyncawaitもされている変数名として許可

let厳密モードでエラーを使用する理由について-厳密モードは、2009年にES5で導入されました。当時、言語設計者は、変数を宣言するための新しいキーワードの使用が将来的に可能であることに気付きましたが、まだ着手しておらず、ES6はまだ長い道のりでした。ES5が登場すると、スクリプトの作成者はコードをわかりやすくするために厳密モードにオプトインし、サイレントエラーを明示的なエラーに変更できます。let変数の宣言にはまだ使用できませんでしたが、strictモードで変数名としてそれを禁止すると、strictモードを選択する将来のスクリプトの可読性が向上し、既存のスクリプトも破損しなくなりました。


2

let他の作品のいくつかは、ストリクトモードでのみ予約語として機能します。スペックは言います

厳密モードで許可厳密モードコードでコンテキスト識別子として許可されているもの、: 、letstaticimplementsinterfacepackageprivateprotectedおよびpublic

let厳格モードでのみ許可されていない単語のリストを見ることができます。let変数名として使用するとエラーが発生する場合は、厳密モードを使用できます

"use strict";
var let = 3


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.