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

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

mathiasbynens.be/notes/reserved-keywords
Mathias Bynens 03.09.2014 16:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
163
1
68 713
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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

Чтобы дополнить Бенк ответ, см. Стандартный 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

Джозеф, спасибо за добавление этой информации. Я нашел этот PDF-файл в Google, но не успел его все открыть и прочитать.

benc 03.10.2008 21:10

«Абстрактное» будущее зарезервированное слово не упоминается ни в спецификации ES5, ни в проекте ES6. Откуда это пришло?

Vladimir Panteleev 06.10.2013 09:10

Нашел! Оно присутствовало в ES3 как будущее зарезервированное слово вместе с длинным списком других, но было удалено в ES5.

Vladimir Panteleev 06.10.2013 10:55

Что это за ответ. Это даже не рифмуется.

Gajus 13.12.2014 15:41

Изменился ли Будущие зарезервированные слова? В связанном PDF-файле я не вижу int, bool и т. д. В списке.

Sebastian Simon 22.04.2015 20:00

Я не вижу здесь let, но я вижу его в документе: ecma-international.org/publications/files/ECMA-ST/Ecma-262.p‌ df

prosti 30.09.2016 16:24

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

Как насчет yield?

Pang 05.08.2020 10:39

Это стихотворение - легенда! Но, к сожалению, включенные слова были зарезервированы в ES3 (байтовые, длинные и т. д.), Которые больше не зарезервированы в ES5, ES6 и следующих версиях.

Tigran Petrosyan 28.01.2021 15:34

Я как раз читал об этом в JavaScript и jQuery: отсутствующее руководство:

Not all of these reserved words will cause problems in all browsers, but it’s best to steer clear of these names when naming variables.

JavaScript keywords: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.

Reserved for future use: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.

Pre-defined global variables in the browser:alert, blur, closed, document, focus, frames, history, innerHeight, innerWidth, length, location, navigator, open, outerHeight, outerWidth, parent, screen, screenX, screenY, statusbar, window.

Использовал местоположение в скрипте и получил очень странное поведение, очень полезный пост.

alimack 04.11.2013 20:01

"Зарезервировано для использования в будущем" :: Все слова Java ... на самом деле довольно ленивый.

Eddie B 29.08.2014 23:20

Обратите внимание, что «зарезервировано» - это не то же самое, что «предварительно инициализировано». В браузере alert уже инициализирован, но ничего не мешает переназначить alert = 5. Однако вы не можете установить window на 5, но можете использовать его как локальную переменную. Это невозможно с зарезервированными ключевыми словами, использование в будущем, null, false, true.

Ruben Verborgh 03.09.2014 17:33

Большинство проголосовавших ответов пропустили yield по моей быстрой проверке, так что +1 от меня. В ES5.1 они могут быть активированы в строгом режиме: implementsinterfaceletpackageprivateprotectedpublicstaticyield

user985399 24.06.2019 17:12

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

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

Если вам нужно использовать eval для чего-либо, это, скорее всего, означает, что вы делаете это неправильно.

SeinopSys 18.03.2015 18:51

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

Abdullah Jibaly 18.03.2015 23:16

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

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

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

Benc ответ отличный, но за мои два цента мне нравится страница w3schools на этом:

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

Другие вопросы по теме