Зарезервированные ключевые слова в JavaScript

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

25.08.2008 15:29:39
Mathias Bynens 3.09.2014 12:13:23
8 ОТВЕТОВ
РЕШЕНИЕ

Мы должны ссылаться на фактические источники информации, а не только на самый популярный 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

110
4.09.2018 21:33:55

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

Зарезервированные слова в EMCAScript-262 - это Ключевое слово s, Будущее зарезервированное слово s, 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

в будущее зарезервированное слово 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
61
17.06.2016 22:17:15
Джозеф, спасибо за добавление этой информации. Я нашел этот PDF в Google, но не было времени, чтобы открыть и прочитать все это.
benc 3.10.2008 17:10:33
«Абстрактное» будущее зарезервированное слово не упоминается ни в спецификации ES5, ни в проекте ES6. Откуда это пришло?
Vladimir Panteleev 6.10.2013 05:10:31
Нашел это! Оно было представлено в ES3 как будущее зарезервированное слово, наряду с длинным списком других, но оно было удалено в ES5.
Vladimir Panteleev 6.10.2013 06:55:04
Что это за ответ? Это даже не рифмуется.
Gajus 13.12.2014 12:41:57
Я не могу видеть letздесь, но я вижу это в документе: ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
prosti 30.09.2016 13:24:14

Вот мое стихотворение, которое включает в себя все зарезервированные ключевые слова в 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.
1474
6.03.2017 13:12:18
screenshots.firefox.com/MVw02wDrHPi197kK/stackoverflow.com это заставляет меня не хотеть нажимать это
Kuba Orlik 8.12.2017 20:18:53

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

20
25.05.2016 04:36:58
Использовал расположение в скрипте и получил очень странное поведение, очень полезный пост.
alimack 4.11.2013 16:01:03
«Зарезервировано для будущего использования» :: Все слова Java ... довольно ленивы.
Eddie B 29.08.2014 19:20:55
Обратите внимание, что «зарезервировано» - это не то же самое, что «предварительно инициализировано». В браузере alertуже инициализируется, но ничто не мешает вам переназначить alert = 5. Однако вы не можете установить windowзначение 5, но вы можете использовать его как локальную переменную. Это не возможно с зарезервированными ключевыми словами, использованием в будущем, null, false, true.
Ruben Verborgh 3.09.2014 13:33:45
Больше голосов, пропущенных yieldмоей быстрой проверкой, так что +1 от меня. В ES5.1 их можно активировать в строгом режиме:implements interface let package private protected public static yield
user985399 24.06.2019 14:12:51

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

function isReservedKeyword(wordToCheck) {
    var reservedWord = false;
    if (/^[a-z]+$/.test(wordToCheck)) {
        try {
            eval('var ' + wordToCheck + ' = 1');
        } catch (error) {
            reservedWord = true;
        }
    }
    return reservedWord;
}
5
23.05.2017 12:02:48
Если вам нужно что-то использовать eval, это, скорее всего, означает, что вы делаете это неправильно.
SeinopSys 18.03.2015 15:51:24
Это идеально подходит для тестового примера, запускаемого во время сборки, полностью действительного, если это не то, что вы показали во время выполнения.
Abdullah Jibaly 18.03.2015 20:16:00

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

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

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

3
8.05.2015 18:39:58

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

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

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

-1
24.03.2016 05:08:47

Вот список из книги 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
5.01.2018 13:19:51