JavaScript 中的保留关键字

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

70204 次浏览

我们应该链接到实际的信息来源,而不仅仅是顶部的谷歌点击。

Http://developer.mozilla.org/en/core_javascript_1.5_reference/reserved_words

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

要补充 Benc 的回答,请参阅 标准 ECMA-262。这些都是官方保留的话,但只有书呆子才会无视实施来尊重标准。对于最流行的实现,也就是火狐和 Internet Explorer,请参阅 benc 的答案。

EMCAScript-262中的保留字是 关键词未来保留字无字面意思布尔文字,其中的 关键词

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

无字面意思

null

布尔文字s 是

true
false

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

我刚在 JavaScript & jQuery: 丢失的手册 上读到这个:

并非所有这些保留字都会在所有浏览器中引起问题,但是在命名变量时最好避开这些名称。

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

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

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

目前没有一个答案警告说,无论 ES 方言,浏览器往往有他们自己的保留关键字列表,方法等上面的 ES 口令。

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

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

Benc 的回答非常好,但就我个人而言,我喜欢 w3school 在这方面的主页:

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

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

以下是 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