JavaScript中的保留关键字

时间:2008-08-25 15:29:40

标签: javascript reserved-words

保留哪些JavaScript关键字(函数名,变量等)?

8 个答案:

答案 0 :(得分:1462)

这是我的诗,其中包含了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.

答案 1 :(得分:109)

我们应该链接到实际的信息来源,而不仅仅是谷歌热门。

http://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Reserved_Words

JScript 8.0: http://msdn.microsoft.com/en-us/library/ttyab5c8.aspx

答案 2 :(得分:60)

要补充benc's answer,请参阅Standard ECMA-262。这些是官方保留词,但只有学者忽略了尊重标准的实施。对于最受欢迎的实现的保留字,即firefox和Internet Explorer,请参阅benc的答案。

EMCAScript-262中的保留字是关键字未来保留字 NullLiteral BooleanLiteral s,其中关键字

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

true
false

答案 3 :(得分: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

答案 4 :(得分:5)

这是一种浏览器和语言版本无关的方法,用于确定JavaScript引擎是否将特定字符串视为关键字。致this answer的积分,它提供了解决方案的核心。

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

答案 5 :(得分:3)

目前的答案都没有警告说,无论ES-Dialect如何,浏览器都倾向于在ES指示的基础上拥有自己的保留关键词,方法等列表。

例如,IE9禁止使用如下的逻辑名称:addFilterremoveFilter(其中包括保留方法)。

有关IE9特定的更广泛的“当前已知”列表,请参阅http://www.jabcreations.com/blog/internet-explorer-9。我还在msdn(或其他地方)找到了对它们的官方引用。

答案 6 :(得分: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

答案 7 :(得分:-1)

benc的答案非常好,但是对于我的两分钱,我喜欢w3schools'这个页面:

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

除了列出标准保留的关键字之外,它还有一长串您在某些情况下应该避免的关键字;例如,在编写要在浏览器中运行的代码时,不使用名称alert。它帮助我弄清楚为什么某些单词在我的编辑器中突出显示为关键字,即使我知道它们不是关键字。