ECMA-262, ECMA-290,
ECMA-327, ECMA-357,
[http://www.ecma-international.org/publications/standards/Ecma-404.htm
ECMAScript es una especificación de lenguaje de programación publicada por ECMA International. El desarrollo empezó en 1996 y estuvo basado en el popular lenguaje JavaScript propuesto como estándar por Netscape Communications Corporation. Actualmente está aceptado como el estándar ISO/IEC 22275:2018.
ECMAScript define un lenguaje de tipos dinámicos ligeramente inspirado en Java y otros lenguajes del estilo de C. Soporta algunas características de la programación orientada a objetos mediante objetos basados en prototipos y pseudoclases.
La mayoría de navegadores de Internet incluyen una implementación del estándar ECMAScript, al igual que un acceso al Document Object Model para manipular páginas web. JavaScript está implementado en la mayoría de navegadores, Internet Explorer de Microsoft usa JScript. El navegador Opera tenía su propio intérprete de ECMAScript con extensiones para soportar algunas características de JavaScript y JScript, actualmente Opera está basado en Chromium (y utiliza su intérprete). Cada navegador tiene extensiones propias al estándar ECMAScript, pero cualquier código que se adecúe al estándar debería funcionar en todos ellos.
ActionScript, para Adobe Flash, también está basado en el estándar ECMAScript, con mejoras que permiten mover, crear y analizar dinámicamente objetos, mientras la película está en ejecución.
Desde el lanzamiento en junio de 1997 del estándar ECMAScript 1, han existido las versiones 2, 3 y 5, que es la más usada actualmente (la 4 se abandonó
). En junio de 2015 se cerró y publicó la versión ECMAScript 6. ECMAScript es una especificación estándar de un lenguaje desarrollado por Brendan Eich, empleado en Netscape; inicialmente se llamaba Mocha, luego LiveScript, y finalmente Javascript. En diciembre de 1995, Sun Microsystems y Netscape anunciaron JavaScript en una conferencia de prensa. En marzo de 1996, Netscape Navigator 2.0 fue lanzado con soporte para JavaScript.
Debido al gran éxito de Javascript como lenguaje de scripting del lado del cliente para páginas web, Microsoft desarrolló un dialecto compatible del lenguaje, llamado JScript, para evitar problemas legales con la marca. JScript agregó nuevos métodos para las fechas, para aliviar los problemas del año 2000 (Y2K), causados en parte porque los métodos de Javascript estaban basados en las clases Date de Java. JScript fue incluido en Internet Explorer 3.0, lanzado en agosto de 1996.
Netscape envió el borrador de JavaScript a Ecma International para su estandarización y para que trabajasen sobre su especificación ECMA-262, que comenzó en noviembre de 1996. La primera edición de ECMA-262 fue adoptada por asamblea general de Ecma en junio de 1997. Varias ediciones del lenguaje estándar han sido publicadas desde entonces. El nombre "ECMAScript" fue un compromiso entre las organizaciones involucradas en la estandarización del lenguaje, especialmente entre Netscape y Microsoft, que se disputaron el dominio de las primeras sesiones estándar. Eich comentó que "ECMAScript fue siempre un nombre de marca indeseado, que sonaba como una enfermedad de la piel."
A pesar de que ambas especificaciones, tanto JavaScript y JScript, apuntan a ser compatibles con ECMAScript, también proveen características adicionales, no descritas en la especificaciones de ECMA. [cita requerida]
Hay once versiones de ECMA-262 publicadas. El trabajo sobre la versión 11 del estándar fue finalizada en junio de 2020.
Allen Wirfs-Brock: ECMA-262, Project Editor, 6th Edition & Brian Terlson: ECMA-262, Project Editor, 7th through 10th Editions
En junio de 2004, Ecma International publicó el estándar ECMA-357, definiendo una extensión de ECMAScript, conocida como ECMAScript para XML (E4X). Ecma también definió un "Perfil compacto" para ECMAScript – conocida como ES-CP, o ECMA 327 – que fue diseñado para dispositivos con recursos limitados, pero se descartó y la retiraron en 2015.
La 11ª edición, o ECMAScript 2020, fue publicada en junio de 2020. Además de nuevas funcionalidades, esta versión incluye el tipo primitivo BigInt
para enteros de tamaño arbitrario primitive, el operador de unión nula (en inglés, nullish coalescing), el encadenamiento opcional (en inglés, optional chaining) y el objeto globalThis
.
Los BigInit se crean con el constructor BigInt
o con la sintaxis 10n
, donde "n" se coloca después del número literal. BigInts permite la representación y manipulación de enteros mayores que Number.MAX_SAFE_INTEGER
, mientras que los números está representados por un valor IEEE 754 de 64 bits de doble precisión. Las funciones integradas en Math
no son compatibles con BigInits; por ejemplo, la potencia de BigInts debe realizarse con el operador **
en lugar de Math.pow
.
El operador de unión nula, ??
, devuelve su operando del lado derecho cuando su lado izquierdo es null
or undefined
. Esto contrasta con el operador ||
, que devolverá "string"
para todos los valores "falsy", como los que se muestran a continuación:
El encadenamiento opcional te permite acceder a las propiedades anidadas de un objeto sin tener una verificación Y en cada nivel.
Un ejemplo es const zipcode = person?.address?.zipcode
. Si alguna de las propiedades no está presente, zipcode
será undefined
.
Con el globalThis podes escribir código que funcione en contexto de ventana y no ventana sin la necesidad de chequeos extra.
ES.Next es un nombre dinámico para referirse a cualquier próxima versión que se esté desarrollando. Las características de ES.Next son conocidas más correctamente como propuestas, porque, por definición, las especificación no ha sido aun finalizada.
Escribe un comentario o lo que quieras sobre ECMAScript (directo, no tienes que registrarte)
Comentarios
(de más nuevos a más antiguos)