en ECMAScript, Javascript

Palabras reservadas a evitar como nombres de variables en Javascript

La primera buena práctica de Javascript que yo recomendaria es: evitar como nombres de variables las palabras reservadas de Javascript.

Las palabras reservadas son aquellas palabras que no debemos utilizar como nombres de variables (identificadores) ya que Javascript tiene asociado algún otro uso para ellas y seguramente nos lanzará un error al querer utilizarlas como nombres de variables.

Buscando una buena referencia de palabras clave a evitar me encontré con este post de Mathias Bynens que es inmejorable. En su articulo, Mathias lista y comenta las palabras clave reservadas de cada una de las versiones ECMAScript. Asi que, con permiso de su autor, este post es una traducción libre de su articulo…

palabras clave reservadas javascript

¿Andas buscando una lista de palabras reservadas en Javascript? ¡¡Has llegado al lugar correcto!! 🙂

Hace poco me surgió la necesidad de consultar esta lista, y como no encontré una fuente clara terminé haciendo yo una comparativa de las palabras clave reservadas para las diferentes versiones ECMAScript.
Asi que para futuras referencias, aquí tenéis el resultado de esta “investigación”

ECMAScript 1

La primera versión de Javascript se basó en ECMAScript 1 que incluía la siguiente lista de palabras reservadas.

ECMAScript 2

Años más tarde, ECMAScript 2 añadió int, byte, char, goto, long, final, float, short, double, native,public, static, throws, boolean, package, private, abstract, volatile, interface, protected,transient, implements, instanceof y synchronized.

ECMAScript 3

ECMAScript 3 no introdujo ningún cambio en la lista de las palabras clave reservadas. Es idéntica a la lista de ECMAScript 2

ECMAScript 4

Lo mismo pasó con ECMAScript 4.

ECMAScript 5

ECMAScript 5/5.1 eliminó de la lista int, byte, char, goto, long, final, float, short, double, native,throws, boolean, abstract, volatile, transient y synchronized

Y añadió let y yield.

Fíjate que implements, let, private, public, interface, package, protected, static, y yield estan prohibidas sólo en strict mode

También he incluido en la lista  eval y arguments. No son estrictamente palabras reservadas pero se comportan como tal  y también están prohibidas en strict mode

Ademas, las propiedades NaN, Infinity, y undefined del objeto global son propiedades inmutables y de sólo lectura en ECMAScript 5. Asi que aunque hagamos var NaN = 42; en el contexto global no nos va a dar error pero tampoco va a hacer nada (no se va guardar ese valor en esa variable/propiedad). Por tanto, para evitar confusiones, es mejor evitar también el uso de estas palabras como identificadores de variables aunque no sean estrictamente palabras reservadas.

ECMAScript 6

El último borrador de ECMAScript 6 añade await como una futura palabra clave dentro de los modulos. let y yield estan prohibidas ahora incluso fuera del modo strict mode

¿Y cual es la utilidad práctica de todo esto?

Las palabras reservadas no deben ser utilizadas como nombres de variable en Javascript. Para un soporte optimo de versiones antiguas de Javascript (y evitar errores inesperados), lo mejor es acostumbrarse a evitar el uso de todas las palabras clave que aparecen en este articulo como nombres de variables o nombres de propiedades, incluso los más antiguos de ECMAScript 2 como char y default.


Cómo habreis observado en cada versión ECMAScript hay una lista de palabras claves reservadas y otra de “futuras” palabras claves reservadas.

Las “futuras” son palabras clave que si bien no están desarrolladas ni especificadas en la versión de ECMAScript que se trate, si que están propuestas oficialmente para ser desarrolladas por lo que se desaconseja su uso también para evitar problemas cuando ya esten implementadas

Post Anterior
Post Siguiente