Какие ключевые слова JavaScript (имена функций, переменные и т. д.) зарезервированы?
Зарезервированные ключевые слова в JavaScript
Ответы (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
Вот мое стихотворение, которое включает в себя все зарезервированные ключевые слова в 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
?
- person Pang; 05.08.2020
Чтобы дополнить ответ Benc, см. Стандарт ECMA-262. Это официальные зарезервированные слова, но только педант игнорирует реализацию, чтобы соблюдать стандарт. Зарезервированные слова самых популярных реализаций, то есть Firefox и Internet Explorer, см. в ответе benc.
Зарезервированными словами в EMCAScript-262 являются Keyword, Future Reserved Word, 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
Зарезервированные слова будущего – это
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
int
или bool
и т. д. в списке.
- person Sebastian Simon; 22.04.2015
let
, но вижу его в документе: ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
- person prosti; 30.09.2016
Я только что читал об этом в 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
.
alert
уже инициализирован, но ничто не мешает переназначить alert = 5
. Однако вы не можете установить window
равным 5, но вы можете использовать его как локальную переменную. Это невозможно с зарезервированными ключевыми словами для использования в будущем, null
, false
, true
.
- person Ruben Verborgh; 03.09.2014
yield
при моей быстрой проверке, поэтому +1 от меня. В ES5.1 их можно активировать в строгом режиме: implements
interface
let
package
private
protected
public
static
yield
- person ; 24.06.2019
Вот независимый от версии браузера и языка способ определить, обрабатывается ли конкретная строка как ключевое слово движком JavaScript. Кредиты на этот ответ, который обеспечивает основу решения.
function isReservedKeyword(wordToCheck) {
var reservedWord = false;
if (/^[a-z]+$/.test(wordToCheck)) {
try {
eval('var ' + wordToCheck + ' = 1');
} catch (error) {
reservedWord = true;
}
}
return reservedWord;
}
eval
для чего-либо, это, скорее всего, означает, что вы делаете это неправильно.
- person SeinopSys; 18.03.2015
Ни один из текущих ответов не предупреждает, что независимо от ES-диалекта браузеры, как правило, имеют свои собственные списки зарезервированных ключевых слов, методов и т. д. в дополнение к тому, что диктует ES.
Например, IE9 запрещает использование логических имен типа: addFilter
, removeFilter
(они, среди прочего, являются зарезервированными методами).
Вот список из книги 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
ответ benc отличный, но за мои два цента мне нравится страница w3schools:
http://www.w3schools.com/js/js_reserved.asp
В дополнение к списку ключевых слов, зарезервированных стандартом, в нем также есть длинный список ключевых слов, которые вам следует избегать в определенных контекстах; например, не использовать имя alert
при написании кода для запуска в браузере. Это помогло мне понять, почему определенные слова выделялись как ключевые слова в моем редакторе, хотя я знал, что они не были ключевыми словами.