Crockford's JavaScript:良い部分にはthe following textが含まれています。一部のJavaScriptの予約語が変数として機能します
予約語
次の単語はJavaScriptに予約されています。これらの言葉の
abstract boolean break byte case catch char class const continue debugger default delete do double else enum export extends false final finally float for function goto if implements import in instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient true try typeof var volatile void while with
ほとんどが言語で使用されていません。
変数やパラメータの名前を付けることはできません。予約済みの ワードがオブジェクトリテラルのキーとして使用されるときは、引用符で囲む必要があります。それは することが必要な場合があるので、彼ら は、ドット表記を使用することはできません代わりにブラケット表記を使用します。
var method; // ok var class; // illegal object = {box: value}; // ok object = {case: value}; // illegal object = {'case': value}; // ok object.box = value; // ok object.case = value; // illegal object['case'] = value; // ok
を予約語の中には、私のインストール通訳に予約されていないように見えます。たとえば、Chrome 48(beta)とnode.js 0.10.40の両方で、次のコードは予約語で識別される2つの数字を正常に追加します。
var abstract = 1;
var native = 1;
abstract + native;
> 2
なぜこれら2つの予約語を変数名として使用できますか?私は何かが欠けている?
[予約語ではありません](http://www.ecma-international.org/ecma-262/6.0/#sec-reserved-words) – Pointy
[予約語のリスト]に表示されるのはなぜですか? (http://www.w3schools。com/js/js_reserved.asp)? – lee
予約語のリストが間違っているためです。 W3Schoolsがしばしば信頼できないとみなされる理由の良い例です。私が提供したリンクは実際の言語仕様です。 – Pointy