题 JavaScript中的保留关键字


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


151
2017-08-25 15:29


起源


mathiasbynens.be/notes/reserved-keywords - Mathias Bynens


答案:


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

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

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

我稍后会查找ECMAScript链接。


104
2017-08-24 17:34



是晚些时候吗? - atilkan


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

1413
2017-09-29 07:07



这是我的时间 await你的更新 - George Mauer
screenshots.firefox.com/MVw02wDrHPi197kK/stackoverflow.com  它让我不想点击它 - Kuba Orlik


为补充 benc的回答,见 标准ECMA-262。这些是官方保留词,但只有学员忽视了遵守标准的实施。对于最受欢迎的实现的保留字,即firefox和Internet Explorer,请参阅benc的答案。

EMCAScript-262中的保留字是 关键词S, 未来保留字S, NullLiteral,和 BooleanLiterals,在哪里 关键词 是

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

59
2018-05-20 14:27



约瑟夫,谢谢你补充这些信息。我在google中发现了PDF,但没有时间打开并阅读所有内容。 - benc
ES5规范和ES6草案都没有提到“抽象的”未来保留字。那个是从哪里来的? - Vladimir Panteleev
找到了!它在ES3中作为未来的保留词以及其他一长串列表出现,但在ES5中被删除了。 - Vladimir Panteleev
这有什么样的答案。它甚至没有押韵。 - Gajus
我看不见 let 在这里,但我在文件中看到它: ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf - prosti


我只是在读这个 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


19
2018-03-18 12:25



在脚本中使用的位置,并得到非常奇怪的行为,非常有用的帖子。 - alimack
“保留供将来使用”::所有Java词......真的很懒。 - Eddie B
请注意,“保留”与“预先初始化”不同。在浏览器中 alert 已经初始化,但没有什么能阻止你重新分配 alert = 5。但是,你无法设置 window 到5,但你可以将它用作局部变量。保留关键字,未来使用,这是不可能的, null, false, true。 - Ruben Verborgh


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

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

5
2018-05-08 18:39



如果你必须使用 eval 对于任何事情,它很可能意味着你做错了。 - SeinopSys
这对于在构建时运行的测试用例来说是完美的,只要它不是你在运行时暴露的东西就完全有效。 - Abdullah Jibaly


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

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

看到 http://www.jabcreations.com/blog/internet-explorer-9 对于IE9特定的更广泛的“当前已知”列表。我还在msdn(或其他地方)找到任何官方的参考资料。


2
2017-11-19 05:37





以下是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
2018-03-24 05:08





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

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

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


-1