サーチ…
前書き
予約済みのキーワード
JavaScriptには、変数、ラベル、または関数名として使用できない予約済みキーワードのコレクションがあらかじめ定義されています。
ECMAScript 1
| A - E | E - R | S - Z |
|---|---|---|
break | export | super |
case | extends | switch |
catch | false | this |
class | finally | throw |
const | for | true |
continue | function | try |
debugger | if | typeof |
default | import | var |
delete | in | void |
do | new | while |
else | null | with |
enum | return |
ECMAScript 2
追加された24の追加キーワードを追加しました。 (太字の新しい追加)。
| A - F | F - P | P - Z |
|---|---|---|
abstract | final | public |
boolean | finally | return |
break | float | short |
byte | for | static |
case | function | super |
catch | goto | switch |
char | if | synchronized |
class | implements | this |
const | import | throw |
continue | in | throws |
debugger | instanceof | transient |
default | int | true |
delete | interface | try |
do | long | typeof |
double | native | var |
else | new | void |
enum | null | volatile |
export | package | while |
extends | private | with |
false | protected |
ECMAScript 5 / 5.1
ECMAScript 3以降に変更はありませんでした。
ECMAScript 5はint 、 byte 、 char 、 goto 、 long 、 final 、 float 、 short 、 double 、 native 、 throws 、 boolean 、 abstract 、 volatile 、 transient 、およびsynchronized削除しました。 letとyield追加letれました。
| A - F | F - P | P - Z |
|---|---|---|
break | finally | public |
case | for | return |
catch | function | static |
class | if | super |
const | implements | switch |
continue | import | this |
debugger | in | throw |
default | instanceof | true |
delete | interface | try |
do | let | typeof |
else | new | var |
enum | null | void |
export | package | while |
extends | private | with |
false | protected | yield |
厳密なモードでのみ 、
implements、let、private、public、interface、package、protected、static、およびyieldは許可されません 。
evalとargumentsは予約語ではありませんが、 strictモードではそのように動作します 。
ECMAScript 6 / ECMAScript 2015
| A - E | E - R | S - Z |
|---|---|---|
break | export | super |
case | extends | switch |
catch | finally | this |
class | for | throw |
const | function | try |
continue | if | typeof |
debugger | import | var |
default | in | void |
delete | instanceof | while |
do | new | with |
else | return | yield |
将来の予約語
以下は、ECMAScript仕様の将来のキーワードとして予約されています。彼らは現在、特別な機能を持っていませんが、将来、ある時点で識別子として使用することはできません。
enum |
以下は厳密なモードのコードで見つかった場合にのみ予約されています:
implements | package | public |
interface | private | `static ' |
let | protected |
旧規格の将来の予約キーワード
以下は、古いECMAScript仕様(ECMAScript 1〜3)の将来のキーワードとして予約されています。
abstract | float | short |
boolean | goto | synchronized |
byte | instanceof | throws |
char | int | transient |
double | long | volatile |
final | native |
さらに、リテラルnull、true、およびfalseは、ECMAScriptの識別子として使用できません。
識別子と識別子の名前
予約語に関しては、変数名または関数名のようなものに使用される「識別子」と複合データ型のプロパティとして許可される「識別子名」との間には小さな区別があります。
たとえば、次のようにすると構文エラーが発生します。
var break = true;
キャッチされないSyntaxError:予期しないトークンブレーク
ただし、名前はオブジェクトのプロパティとして有効とみなされます(ECMAScript 5以降)。
var obj = {
break: true
};
console.log(obj.break);
この回答を引用するには:
セクション7.6
識別子名は、Unicode標準の第5章の「識別子」セクションで与えられた文法に従って解釈されるトークンであり、若干の変更が加えられている。
IdentifierはReservedWordではないIdentifierNameです( 7.6.1参照)。
構文
Identifier :: IdentifierName but not ReservedWord
仕様によって、 ReservedWordは次のようになります。
セクション7.6.1
予約語は、
IdentifierNameとして使用できないIdentifierです。ReservedWord :: Keyword FutureReservedWord NullLiteral BooleanLiteral
これには、キーワード、将来のキーワード、 null 、ブールリテラルが含まれます。キーワードの完全なリストはセクション7.6.1にあり、リテラルはセクション7.8にあります。
上記(7.6節)は、 IdentifierNameがReservedWordであり、 オブジェクトイニシャライザの仕様からなることを示しています 。
11.1.5項
構文
ObjectLiteral : { } { PropertyNameAndValueList } { PropertyNameAndValueList , }
PropertyNameが指定されている場所:
PropertyName : IdentifierName StringLiteral NumericLiteral
あなたが見ることができるように、 PropertyNameかもしれIdentifierNameので可能、 ReservedWord sがあることをPropertyName秒。それは決定的仕様で 、持つことを許される、ということを教えてくれるReservedWordのようなclassやvarなどPropertyNameの単なる文字列リテラルや数値リテラルのように引用符で囲まれていないが。
詳細は、 7.6節 「識別子の名前と識別子」を参照してください。
注:この例の構文ハイライトは、予約語を検出して、強調表示しています。この例は有効ですが、Javascriptの開発者は、そうでないと主張するいくつかのコンパイラ/トランスパイライザ、linter、minifierのツールによってキャッチされる可能性があります。