Respuestas:
Deberíamos estar vinculados a las fuentes de información reales, en lugar de solo al éxito de 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
Aquí está mi poema, que incluye todas las palabras clave reservadas en JavaScript, y está dedicado a aquellos que permanecen honestos en este momento, y no solo intentan calificar:
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 la respuesta de benc , consulte la Norma ECMA-262 . Estas son las palabras oficiales reservadas, pero solo un pedante ignora la implementación para respetar el estándar. Para las palabras reservadas de las implementaciones más populares, es decir, Firefox e Internet Explorer, vea la respuesta de benc.
Las palabras reservadas en EMCAScript-262 son las palabras clave s, las palabras reservadas futuras , NullLiteral y BooleanLiteral s, donde las palabras clave son
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
las palabras reservadas para el futuro son
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
el NullLiteral es
null
y los BooleanLiteral s son
true
false
let
aquí, pero lo veo en el docu: ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
Estaba leyendo sobre esto en JavaScript y jQuery: The Missing Manual :
No todas estas palabras reservadas causarán problemas en todos los navegadores, pero es mejor evitar estos nombres al nombrar variables.
JavaScript Palabras clave:
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
.Pre-definido variables globales en el navegador:
alert, blur, closed, document, focus, frames, history, innerHeight, innerWidth, length, location, navigator, open, outerHeight, outerWidth, parent, screen, screenX, screenY, statusbar, window
.
alert
ya está inicializado, pero nada le impide reasignaralert = 5
. Sin embargo, no puede establecerlo window
en 5, pero puede usarlo como una variable local. Eso no es posible con las palabras clave reservadas, su uso futuro, null
, false
, true
.
Aquí hay una forma independiente del navegador y la versión de idioma para determinar si una cadena particular es tratada como una palabra clave por el motor de JavaScript. Créditos a esta respuesta que proporciona el núcleo de la solución.
function isReservedKeyword(wordToCheck) {
var reservedWord = false;
if (/^[a-z]+$/.test(wordToCheck)) {
try {
eval('var ' + wordToCheck + ' = 1');
} catch (error) {
reservedWord = true;
}
}
return reservedWord;
}
eval
para algo, lo más probable es que lo esté haciendo mal.
Ninguna de las respuestas actuales advierte que, independientemente de ES-Dialect, los navegadores tienden a tener sus propias listas de palabras clave reservadas, métodos, etc., además de lo que dicta ES.
Por ejemplo, IE9 prohíbe el uso de nombres lógicos como: addFilter
,removeFilter
(que, entre otros, están reservados métodos).
Consulte http://www.jabcreations.com/blog/internet-explorer-9 para obtener una lista más extensa "actualmente conocida" específica para IE9. Todavía he encontrado alguna referencia oficial a ellos en msdn (o en otro lugar).
Aquí hay una lista del libro JavaScript Eloquent:
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
la respuesta de benc es excelente, pero por mis dos centavos, me gusta la página de w3schools en esto:
http://www.w3schools.com/js/js_reserved.asp
Además de enumerar las palabras clave reservadas por el estándar, también tiene una larga lista de palabras clave que debe evitar en ciertos contextos; por ejemplo, no usar el nombre alert
al escribir código para ejecutarlo en un navegador. Me ayudó a entender por qué ciertas palabras se destacaban como palabras clave en mi editor, aunque sabía que no eran palabras clave.