Відповіді:
Ми повинні посилатися на фактичні джерела інформації, а не лише на найпопулярніший хіт 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, дивіться у відповіді Benc.
Зарезервовані слова в 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
і булеві Літеральні є
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 (або в іншому місці).
Ось список з красномовної книги 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
Відповідь Бенка відмінна, але для моїх двох центів мені подобається сторінка w3schools на цьому:
http://www.w3schools.com/js/js_reserved.asp
Крім переліку ключових слів, зарезервованих стандартом, він також містить довгий список ключових слів, яких слід уникати в певних контекстах; наприклад, не використовувати ім'я alert
під час написання коду для запуску у браузері. Це допомогло мені зрозуміти, чому певні слова виділяються як ключові слова в моєму редакторі, хоча я знав, що вони не є ключовими словами.