ECMAScript ( / ˈɛkməskrɪpt / ; ES ) [ 1] es un estándar para lenguajes de scripting, incluidos JavaScript , JScript y ActionScript . Es más conocido como un estándar de JavaScript destinado a garantizar la interoperabilidad de páginas web en diferentes navegadores web . [ 2 ] Está estandarizado por Ecma International en el documento ECMA-262.
ECMAScript se utiliza comúnmente para scripts del lado del cliente en la World Wide Web , y se utiliza cada vez más para aplicaciones y servicios del lado del servidor que utilizan entornos de tiempo de ejecución: Node.js , [3] deno [4] y bun . [5]
ECMA-262 , o la Especificación del lenguaje ECMAScript , define el lenguaje ECMAScript , o simplemente ECMAScript . [6] ECMA-262 especifica solo la sintaxis del lenguaje y la semántica de la interfaz de programación de aplicaciones ( API ) principal, como Array , Function y globalThis , mientras que las implementaciones válidas de JavaScript agregan su propia funcionalidad, como entrada/salida y manejo del sistema de archivos .
La especificación ECMAScript es una especificación estandarizada de un lenguaje de scripting desarrollado por Brendan Eich de Netscape ; inicialmente llamado Mocha, luego LiveScript y finalmente JavaScript. [7] En diciembre de 1995, Sun Microsystems y Netscape anunciaron JavaScript en un comunicado de prensa. [8] En noviembre de 1996, Netscape anunció una reunión de la organización de estándares internacionales Ecma para avanzar en la estandarización de JavaScript. [9] La primera edición de ECMA-262 fue adoptada por la Asamblea General de Ecma en junio de 1997. Desde entonces se han publicado varias ediciones del estándar de lenguaje. El nombre "ECMAScript" fue un compromiso entre las organizaciones involucradas en la estandarización del lenguaje, especialmente Netscape y Microsoft, cuyas disputas dominaron las primeras sesiones de estándares. Eich comentó que "ECMAScript siempre fue un nombre comercial no deseado que suena como una enfermedad de la piel ". [10] ECMAScript se ha formalizado a través de la semántica operativa mediante el trabajo en la Universidad de Stanford y el Departamento de Computación , Imperial College London para el análisis de seguridad y la estandarización. [11] "ECMA" significaba "Asociación Europea de Fabricantes de Computadoras" hasta 1994.
El Comité Técnico 39 (TC39) de ECMA es responsable del mantenimiento de ECMAScript. [12] Las nuevas propuestas para el lenguaje pasan por un proceso por etapas, en el que cada etapa representa la integridad de la especificación de la propuesta. Se debe llegar a un consenso dentro del comité para avanzar una propuesta a la siguiente etapa. Las propuestas que alcanzan la etapa 4, la etapa final, se incluirán en la próxima versión del estándar. [13] Desde el lanzamiento de la versión 6 en junio de 2015, se han finalizado y publicado nuevas versiones principales cada junio. [14]
El lenguaje ECMAScript incluye características estructuradas , dinámicas , funcionales y basadas en prototipos . [15]
ECMAScript JavaScript admite la programación estructurada al estilo C. Anteriormente, JavaScript solo admitía el alcance de funciones mediante la palabra clave var
, pero ECMAScript 2015 agregó las palabras clave let
y const
, lo que permite que JavaScript admita tanto el alcance de bloques como el alcance de funciones. JavaScript admite la inserción automática de punto y coma , lo que significa que los puntos y coma que normalmente terminan una declaración en C pueden omitirse en JavaScript. [16]
Al igual que en los lenguajes de estilo C, el flujo de control se realiza con las instrucciones while
, for
, do
/ while
, if
/ else
y switch
. Las funciones tienen tipos débiles y pueden aceptar y devolver cualquier tipo. Los argumentos que no se proporcionan tienen como valor predeterminado undefined
.
ECMAScript está tipado débilmente . Esto significa que ciertos tipos se asignan implícitamente en función de la operación que se esté realizando. Sin embargo, existen varias peculiaridades en la implementación de JavaScript de la conversión de una variable de un tipo a otro. Estas peculiaridades han sido el tema de una charla titulada Wat . [17] [18]
ECMAScript se tipifica dinámicamente. Por lo tanto, un tipo se asocia a un valor en lugar de a una expresión. ECMAScript admite varias formas de probar el tipo de objetos, incluido el tipado dinámico . [19]
Desde ES 2015, la transpilación de JavaScript se ha vuelto muy común. La transpilación es una compilación de código fuente a código fuente en la que se utilizan versiones más nuevas de JavaScript y un transpilador reescribe el código fuente para que sea compatible con navegadores más antiguos. Por lo general, los transpiladores transpilan hasta ES3 para mantener la compatibilidad con todas las versiones de navegadores. Las configuraciones para transpilar a una versión específica se pueden configurar según la necesidad. La transpilación agrega un paso adicional al proceso de compilación y, a veces, se realiza para evitar la necesidad de polyfills . Los polyfills crean nuevas características para entornos más antiguos que carecen de ellas. Los polyfills hacen esto en tiempo de ejecución en el intérprete, como el navegador del usuario o en el servidor. En cambio, la transpilación reescribe el código ECMA en sí durante la fase de compilación del desarrollo antes de que llegue al intérprete.
En 2010, Ecma International comenzó a desarrollar una prueba de estándares para ECMAScript Ecma 262. [20] Test262 es un conjunto de pruebas de conformidad con ECMAScript que se puede utilizar para comprobar en qué medida una implementación de JavaScript sigue la especificación ECMAScript. El conjunto de pruebas contiene miles de pruebas individuales, cada una de las cuales prueba algún requisito específico de la especificación ECMAScript. El desarrollo de Test262 es un proyecto del Comité Técnico 39 de Ecma (TC39). El marco de pruebas y las pruebas individuales son aportados a Ecma por organizaciones miembro del TC39.
Google ( conjunto de pruebas Sputnik ) y Microsoft realizaron importantes contribuciones , cada uno de los cuales contribuyó con miles de pruebas. El conjunto de pruebas Test262 constaba de38 014 pruebas a enero de 2020. [actualizar][ 21] Las especificaciones de ECMAScript a través de ES7 tienen un buen soporte en los principales navegadores web . La siguiente tabla muestra el índice de conformidad de las versiones actuales del software con respecto a las ediciones más recientes de ECMAScript.
El lenguaje de programación JavaScript [...] se basa en el estándar ECMAScript , o ES para abreviar.