Зарезервированные ключевые слова в JavaScript - PullRequest
160 голосов
/ 25 августа 2008

Какие ключевые слова JavaScript (имена функций, переменные и т. Д.) Зарезервированы?

Ответы [ 8 ]

1462 голосов
/ 24 августа 2012

Вот мое стихотворение, которое включает в себя все зарезервированные ключевые слова в 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.
109 голосов
/ 13 сентября 2008

Мы должны ссылаться на фактические источники информации, а не просто на самый популярный Google.

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

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

61 голосов
/ 29 сентября 2008

В дополнение к ответу Бенка , см. Стандарт ECMA-262 . Это официальные зарезервированные слова, но только педант игнорирует реализацию, чтобы соблюдать стандарт. Зарезервированные слова самых популярных реализаций, таких как firefox и internet explorer, см. В ответе benc.

Зарезервированные слова в EMCAScript-262: Ключевое слово с, Зарезервированное слово в будущем с, NullLiteral и 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

Слово, зарезервированное на будущее s

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
20 голосов
/ 20 мая 2013

Я только что читал об этом в 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.

5 голосов
/ 18 марта 2015

Вот независимый от браузера и языковой версии способ определить, обрабатывается ли определенная строка как ключевое слово механизмом JavaScript. Кредиты этот ответ , который обеспечивает ядро ​​решения.

function isReservedKeyword(wordToCheck) {
    var reservedWord = false;
    if (/^[a-z]+$/.test(wordToCheck)) {
        try {
            eval('var ' + wordToCheck + ' = 1');
        } catch (error) {
            reservedWord = true;
        }
    }
    return reservedWord;
}
3 голосов
/ 08 мая 2015

Ни один из текущих ответов не предупреждает, что независимо от ES-Dialect, браузеры, как правило, имеют свои собственные списки зарезервированных ключевых слов, методов и т. Д. В дополнение к тому, что диктует ES.

Например, IE9 запрещает использование логических имен, таких как: addFilter, removeFilter (они, среди прочего, являются зарезервированными методами).

См. http://www.jabcreations.com/blog/internet-explorer-9 для более обширного «известного в настоящее время» списка, специфичного для IE9. Я пока не нашел официальной ссылки на них в MSDN (или где-либо еще).

1 голос
/ 19 ноября 2017

Вот список из книги 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
0 голосов
/ 24 марта 2016

Ответ Бенка превосходен, но за мои два цента мне нравится страница w3schools по этому адресу:

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

В дополнение к перечислению ключевых слов, зарезервированных стандартом, он также содержит длинный список ключевых слов, которые следует избегать в определенных контекстах; например, не использовать имя alert при написании кода для запуска в браузере. Это помогло мне понять, почему определенные слова выделяются в качестве ключевых слов в моем редакторе, хотя я знал, что они не являются ключевыми словами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...