私が求めているのは、1 つまたは 2 つのブラウザーでのみ無効な変数名です。
そのような単語が存在する場合、そのブラウザは ECMA-262 に準拠していません。ECMA-262 の予約語のみが「無効な変数名」です (名前が許可された文字などの変数名の基準に準拠している場合)。
[print] が予備のキーワードとして文書化されていないのはなぜですか?
予約語は、予約語の概念を持つ標準によってのみ定義できます。その概念を持つブラウザーでの DOM のスクリプト作成に関連する唯一の標準は、ECMA-262 です。また、 printは予約語としてリストされていないため、予約語ではありません。
ホスト オブジェクトとそのプロパティを定義するさまざまな DOM 標準がありますが、予約語の概念に最も近いのは、読み取り専用プロパティ、または書き込み不可のプロパティです。window.print
は HTML5 で定義されていますが、書き込み可能ではない、または割り当てられた場合や変更が試みられた場合にエラーをスローする必要があるとは定義されていません。そのため、予約語に近い動作を示すことはありません。
避けるべき変数名の大きなリストはありますか?
いいえ、ないからです。ただし、ホスト オブジェクト ( windowなど) には、書き込み可能な既定のプロパティがあるため、それらを上書きしないようにする必要があります。HTML5 仕様やブラウザー ベンダーのドキュメントなど、さまざまな場所にリストする必要があります。
たとえば、windowオブジェクトの次のリンク:
- W3C HTML5 ウィンドウ オブジェクト: http://www.w3.org/TR/html5/browsers.html#the-window-object
- MDN ウィンドウ オブジェクト: https://developer.mozilla.org/en/DOM/window
- MSDN ウィンドウ オブジェクト: http://msdn.microsoft.com/en-us/library/ms535873(v=vs.85).aspx
さらに、特定の時点で列挙可能なプロパティを検出するための単純な for..in ループ (Berji の回答による) があります。区別のないプロパティ。
可能性のあるプロパティ名を避け、グローバル変数 (つまり、ウィンドウ オブジェクトのユーザー定義プロパティ) の使用を最小限に抑える命名規則を採用する方が良い戦略です。