Una de las mayores quejas de los desarrolladores frente a JavaScript es la interpretación tan libre que hacen los navegadores de él. Si bien es cierto que los mismos han sido muy permisivos a la hora de interpretar el código, los desarrolladores tampoco han puesto de su parte para intentar que el mismo sea lo más purista posible y, en ocasiones, no se han documentado lo suficiente para conocer las malas prácticas que tan a menudo se llevan a cabo.
«use strict»;
En la quinta edición de la especificación de ECMAScript se habilitó el uso de use strict.Cuando lo establecemos en un archivo, una función o incluso en una aplicación Windows Store, estamos obligando al navegador a que sea más restrictivo con la interpretación y que no pase por alto errores, como variables sin declarar (que se convierten automáticamente en globales), el uso de variables creadas dentro de una función eval fuera de ese contexto, el uso de with, etcétera. Para tener una visión más completa, se puede revisar la siguiente tabla de restricciones en modo strict en la página de MSDN.
En cuanto al ámbito, no tiene por qué ser necesariamente todo el archivo o toda la aplicación, ya que se puede granular su uso:
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <script> //strict mode OFF (function () { "use strict"; //strict mode ON })(); //strict mode OFF </script> </body> </html>
Dependiendo del navegador que estemos utilizando, cuando nuestro código cometa alguno de los errores indicados, mostrará el error a través de la consola o bien en un cuadro de diálogo con la excepción:
Como es habitual, no todos los navegadores cumplen del mismo modo la especificación de ECMAScript, sobre todo en las versiones más antiguas. En esta página podemos ver una tabla de compatibilidad de los navegadores más comunes. Por otro lado, si queremos conocer qué excepciones soporta cada navegador dentro del modo strict basta con acceder al siguiente enlace.
Si queréis descargar la versión de ECMAScript 5.1 podéis hacerlo aquí.
¡Saludos!