Respostas:
Deveríamos estar vinculando às fontes de informação reais, e não apenas ao principal hit do 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
Aqui está o meu poema, que inclui todas as palavras-chave reservadas em JavaScript, e é dedicado àqueles que permanecem honestos no momento, e não apenas tentam pontuar:
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.
Para complementar a resposta de benc , consulte o Padrão ECMA-262 . Essas são as palavras reservadas oficiais, mas apenas um pedante ignora a implementação para respeitar o padrão. Para as palavras reservadas das implementações mais populares, que são firefox e internet explorer, consulte a resposta de benc.
As palavras reservadas no EMCAScript-262 são as Palavras - chave s, Palavras Reservadas Futuras , NullLiteral e BooleanLiteral s, onde as Palavras - chave são
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
as futuras palavras reservadas são
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
o NullLiteral é
null
e os BooleanLiteral s são
true
false
let
aqui, mas eu vejo isso no docu: ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
Eu estava lendo sobre isso em JavaScript e jQuery: The Missing Manual :
Nem todas essas palavras reservadas causarão problemas em todos os navegadores, mas é melhor evitar esses nomes ao nomear variáveis.
JavaScript Palavras-chave:
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
.Reservado para uso futuro:
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
.Pré-definido variáveis globais no navegador:
alert, blur, closed, document, focus, frames, history, innerHeight, innerWidth, length, location, navigator, open, outerHeight, outerWidth, parent, screen, screenX, screenY, statusbar, window
.
alert
já está inicializado, mas nada impede a sua reatribuição alert = 5
. No entanto, você não pode definir window
para 5, mas pode usá-lo como uma variável local. Isso não é possível com palavras-chave reservadas, uso futuro, null
, false
, true
.
Aqui está uma maneira independente de versão de navegador e idioma para determinar se uma sequência específica é tratada como uma palavra-chave pelo mecanismo JavaScript. Créditos a esta resposta, que fornece o núcleo da solução.
function isReservedKeyword(wordToCheck) {
var reservedWord = false;
if (/^[a-z]+$/.test(wordToCheck)) {
try {
eval('var ' + wordToCheck + ' = 1');
} catch (error) {
reservedWord = true;
}
}
return reservedWord;
}
eval
algo, provavelmente significa que está fazendo errado.
Nenhuma das respostas atuais avisa que, independentemente do ES-Dialect, os navegadores tendem a ter suas próprias listas de palavras-chave reservadas, métodos etc., além do que o ES exige.
Por exemplo, IE9 proíbe o uso de nomes lógicos como: addFilter
, removeFilter
(que, entre outros, são métodos reservados).
Consulte http://www.jabcreations.com/blog/internet-explorer-9 para obter uma lista mais extensa 'atualmente conhecida' específica para o IE9. Eu ainda encontrei alguma referência oficial a eles no msdn (ou em outro lugar).
Aqui está uma lista do livro 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
A resposta de benc é excelente, mas para meus dois centavos, gosto da página da w3schools sobre isso:
http://www.w3schools.com/js/js_reserved.asp
Além de listar as palavras-chave reservadas pelo padrão, ele também possui uma longa lista de palavras-chave que você deve evitar em determinados contextos; por exemplo, não usar o nome alert
ao escrever o código para ser executado em um navegador. Isso me ajudou a descobrir por que certas palavras estavam destacando como palavras-chave no meu editor, mesmo sabendo que não eram palavras-chave.