167

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

4

8 回答 8

1490

这是我的诗,其中包括 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.
于 2012-08-24T17:34:32.653 回答
112

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

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

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

于 2008-09-13T07:54:42.603 回答
62

要补充benc 的答案,请参阅标准 ECMA-262。这些是官方的保留词,但只有一个书呆子才会忽略执行以尊重标准。对于最流行的实现的保留字,即 firefox 和 internet explorer,请参阅 benc 的答案。

EMCAScript-262 中的保留字是Keyword s、Future Reserved WordsNullLiteralBooleanLiteral 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
于 2008-09-29T07:07:59.147 回答
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 .

于 2013-05-20T14:27:01.213 回答
5

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

function isReservedKeyword(wordToCheck) {
    var reservedWord = false;
    if (/^[a-z]+$/.test(wordToCheck)) {
        try {
            eval('var ' + wordToCheck + ' = 1');
        } catch (error) {
            reservedWord = true;
        }
    }
    return reservedWord;
}
于 2015-03-18T12:25:28.343 回答
3

当前的答案都没有警告说,无论 ES-Dialect 是什么,浏览器都倾向于在 ES 规定的基础上拥有自己的保留关键字、方法等列表。

例如,IE9 禁止使用如下逻辑名称:addFilter, removeFilter(它们是保留方法)。

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

于 2015-05-08T18:39:58.560 回答
2

这是 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
于 2017-11-19T05:37:57.257 回答
0

benc 的回答非常好,但对于我的两分钱,我喜欢 w3schools 的页面:

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

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

于 2016-03-24T05:08:47.120 回答