Ответы:
Мы должны ссылаться на фактические источники информации, а не только на самый популярный 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.
В дополнение к ответу 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
letздесь, но я вижу это в документе: ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
Я только что читал об этом в 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.
Вот независимый от браузера и языковой версии способ определить, обрабатывается ли определенная строка как ключевое слово механизмом JavaScript. Кредиты на этот ответ, который обеспечивает ядро решения.
function isReservedKeyword(wordToCheck) {
var reservedWord = false;
if (/^[a-z]+$/.test(wordToCheck)) {
try {
eval('var ' + wordToCheck + ' = 1');
} catch (error) {
reservedWord = true;
}
}
return reservedWord;
}
eval, это, скорее всего, означает, что вы делаете это неправильно.
Ни один из текущих ответов не предупреждает, что независимо от ES-Dialect, браузеры, как правило, имеют свои собственные списки зарезервированных ключевых слов, методов и т. Д., В дополнение к тому, что диктует ES.
Например, IE9 запрещает использование логических имен , таких как: addFilter, removeFilter(они, в частности, зарезервированы методы).
См. Http://www.jabcreations.com/blog/internet-explorer-9 для более обширного «известного в настоящее время» списка, специфичного для IE9. Я еще не нашел каких-либо официальных ссылок на них на MSDN (или в другом месте).
Вот список из книги Eloquent JavaScript:
breakcasecatchclassconstcontinuedebuggerdefaultdeletedoelseenumexportextendfalsefinallyforfunctionifimplementsimportininstanceofinterfaceletnewnullpackageprivateprotectedpublicreturnstaticsuperswitchthisthrowtruetrytypeofvarvoidwhilewithyieldОтвет Бенка превосходный, но за мои два цента мне нравится страница w3schools:
http://www.w3schools.com/js/js_reserved.asp
Помимо перечисления ключевых слов, зарезервированных стандартом, он также содержит длинный список ключевых слов, которых следует избегать в определенных контекстах; например, не использовать имя alertпри написании кода для запуска в браузере. Это помогло мне понять, почему определенные слова выделялись в качестве ключевых слов в моем редакторе, хотя я знал, что они не являются ключевыми словами.