JavaScriptの予約済みキーワード


回答:



1476

これが私の詩です。JavaScriptの予約済みキーワードがすべて含まれており、ただスコアするだけでなく、現時点で正直でいる人に捧げられています。

Let this long package float, 
Goto private class if short.
While protected with debugger case,  
Continue volatile interface.
Instanceof super synchronized throw, 
Extends final export throws.  

Try import double enum?  
- False, boolean, abstract function, 
Implements typeof transient break!
Void static, default do,  
Switch int native new. 
Else, delete null public var 
In return for const, true, char
…Finally catch byte.


61

bencの回答を補足するには、Standard ECMA-262を参照してください。これらは公式の予約語ですが、標準を尊重するために実装を無視するのはペダントだけです。最も人気のある実装、つまりFirefoxとInternet Explorerの予約語については、bencの回答を参照してください。

EMCAScript-262の予約語は、KeywordFuture Reserved WordNullLiteral、およびBooleanLiteralであり、キーワード

break     do        instanceof  typeof
case      else      new         var
catch     finally   return      void
continue  for       switch      while
debugger  function  this        with
default   if        throw
delete    in        try

今後の予約語のアール

abstract  export      interface  static
boolean   extends     long       super
byte      final       native     synchronized
char      float       package    throws
class     goto        private    transient
const     implements  protected  volatile
double    import      public 
enum      int         short

NullLiteralがあります

null

そしてBooleanLiteral sがあります

true
false

ジョセフ、その情報を追加してくれてありがとう。私はそのPDFをグーグルで見つけましたが、それを開いてすべて読む時間はありませんでした。
2008年

「抽象的な」将来の予約語は、ES5仕様にもES6ドラフトにも記載されていません。それはどこから来ましたか?
Vladimir Panteleev 2013年

2
それを見つけた!ES3には他の多数のリストとともに将来の予約語として存在していましたが、ES5では削除されました。
Vladimir Panteleev 2013年

13
これはどのような答えです。それは韻さえしません。
Gajus、2014

1
letここには表示されませんが、ドキュメント
prosti

20

私はちょうどこれについてJavaScriptとjQueryで読んでいた:The Missing Manual

これらの予約語のすべてがすべてのブラウザーで問題を引き起こすわけではありませんが、変数に名前を付けるときは、これらの名前を避けて操作することをお勧めします。

JavaScriptキーワード: break, case, catch, continue, debugger, default, delete, do, else, false, finally, for, function, if, in, instanceof, new, null, return, switch, this, throw, true, try, typeof, var, void, while, with

将来の使用のために予約済み: abstract, boolean, byte, char, class, const, double, enum, export, extends, final, float, goto, implements, import, int, interface, let, long, native, package, private, protected, public, short, static, super, synchronized, throws, transient, volatile, yield

ブラウザで事前定義されたグローバル変数: alert, blur, closed, document, focus, frames, history, innerHeight, innerWidth, length, location, navigator, open, outerHeight, outerWidth, parent, screen, screenX, screenY, statusbar, window


スクリプトで場所を使用し、非常に奇妙な動作、非常に便利な投稿を得ました。
alimack 2013年

2
「将来の使用のために予約済み」::すべてのJava語...本当にかなり怠惰です。
Eddie B

2
「予約済み」は「事前初期化済み」と同じではないことに注意してください。ブラウザでalertは、はすでに初期化されていますが、の再割り当てを妨げるものはありませんalert = 5。ただし、window5に設定することはできませんが、ローカル変数として使用できます。これは、予約キーワード、将来の使用とことはできませんnullfalsetrue
Ruben Verborgh 14

yield私のクイックチェックで見逃された投票結果が多いほど、+ 1します。ES5.1のこれらの缶は、厳密モードによって活性化される:implements interface let package private protected public static yield

5

これは、特定の文字列がJavaScriptエンジンによってキーワードとして処理されているかどうかを判断するためのブラウザーと言語バージョンに依存しない方法です。ソリューションの中核を提供するこの回答への謝辞。

function isReservedKeyword(wordToCheck) {
    var reservedWord = false;
    if (/^[a-z]+$/.test(wordToCheck)) {
        try {
            eval('var ' + wordToCheck + ' = 1');
        } catch (error) {
            reservedWord = true;
        }
    }
    return reservedWord;
}

7
eval何かに使用する必要がある場合、それはおそらくあなたがそれを間違っていることを意味します。
SeinopSys

8
これは、ビルド時に実行するテストケースに最適です。実行時に公開したものでない限り、完全に有効です。
Abdullah Jibaly 2015年

3

現在の回答では、ES-Dialectに関係なく、ブラウザがESの指示に加えて、独自の予約済みキーワード、メソッドなどのリストを持つ傾向があることを警告していません。

たとえば、IE9はのような論理名の使用を禁止します:addFilterremoveFilter(それらは、とりわけ、方法を予約されています)。

IE9固有のより広範な「現在知られている」リストについては、http://www.jabcreations.com/blog/internet-explorer-9を参照してください。私はまだmsdn(または他の場所)でそれらへの公式の参照を見つけていません。


1

Eloquent JavaScriptブックのリストは次のとおりです。

  • break
  • case
  • catch
  • class
  • const
  • continue
  • debugger
  • default
  • delete
  • do
  • else
  • enum
  • export
  • extend
  • false
  • finally
  • for
  • function
  • if
  • implements
  • import
  • in
  • instanceof
  • interface
  • let
  • new
  • null
  • package
  • private
  • protected
  • public
  • return
  • static
  • super
  • switch
  • this
  • throw
  • true
  • try
  • typeof
  • var
  • void
  • while
  • with
  • yield

-1

bencの答えは素晴らしいですが、私の2セントにとって、私はこれに関するw3schoolsのページが好きです。

http://www.w3schools.com/js/js_reserved.asp

標準で予約されているキーワードのリストに加えて、特定のコンテキストで避けるべきキーワードの長いリストもあります。たとえば、alertブラウザで実行するコードを記述するときに名前を使用しません。特定の単語がキーワードではないことがわかっていたにもかかわらず、エディターでキーワードとして強調表示されている理由を理解するのに役立ちました。

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