Palabras clave reservadas en JavaScript

Respuestas:

1476

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.
art4theSould
fuente
55
screenshots.firefox.com/MVw02wDrHPi197kK/stackoverflow.com me hace no querer hacer clic en eso
Kuba Orlik
61

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
Joseph Holsten
fuente
Joseph, gracias por agregar esa información. Encontré ese PDF en Google, pero no tuve tiempo de abrirlo y leerlo todo.
benc
La palabra reservada futura "abstracta" no se menciona en la especificación ES5 ni en el borrador ES6. De donde vino eso?
Vladimir Panteleev
2
¡Lo encontré! Estaba presente en ES3 como una palabra reservada en el futuro, junto con una larga lista de otros, pero se eliminó en ES5.
Vladimir Panteleev
13
¿Qué tipo de respuesta es esta? Ni siquiera rima.
Gajus
1
No puedo ver letaquí, pero lo veo en el docu: ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
prosti
20

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 .

soy yo
fuente
Utilicé la ubicación en un script y obtuve un comportamiento muy extraño, publicación muy útil.
alimack
2
"Reservado para uso futuro" :: Todas las palabras de Java ... bastante vago realmente.
Eddie B
2
Tenga en cuenta que "reservado" no es lo mismo que "preinicializado". En el navegador, alertya está inicializado, pero nada le impide reasignaralert = 5 . Sin embargo, no puede establecerlo windowen 5, pero puede usarlo como una variable local. Eso no es posible con las palabras clave reservadas, su uso futuro, null, false, true.
Ruben Verborgh
Las respuestas más votadas se perdieron yielden mi comprobación rápida, por lo que hice un +1. Estos se pueden activar en ES5.1 por modo estricto:implements interface let package private protected public static yield
5

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;
}
GOTO 0
fuente
77
Si tiene que usarlo evalpara algo, lo más probable es que lo esté haciendo mal.
SeinopSys
8
Esto es perfecto para un caso de prueba ejecutado en tiempo de compilación, completamente válido siempre que no sea algo que haya expuesto en tiempo de ejecución.
Abdullah Jibaly
3

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).

GitaarLAB
fuente
1

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
starhopperx
fuente
-1

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 alertal 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.

Reikim
fuente