ECMAScript ( / ˈ ɛ k m ə s k r ɪ p t / ; ES ) [1] es un estándar para lenguajes de scripting, incluidos JavaScript , JScript y ActionScript . Es mejor 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 Internacional en el documento ECMA-262.
ECMAScript se usa comúnmente para secuencias de comandos del lado del cliente en la World Wide Web , y se usa cada vez más para aplicaciones y servicios del lado del servidor que utilizan entornos de ejecución: Node.js , [3] deno [4] y bun . [5]
ECMA-262 , o 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 programación 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 lingüístico. 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 a enfermedad de la piel ". [10] ECMAScript se ha formalizado mediante semántica operativa mediante el trabajo de la Universidad de Stanford y el Departamento de Computación del Imperial College de Londres para el análisis y la estandarización de la seguridad. [11] "ECMA" significaba "Asociación Europea de Fabricantes de Computadoras" hasta 1994.
El lenguaje ECMAScript incluye características estructuradas , dinámicas , funcionales y basadas en prototipos . [12]
ECMAScript JavaScript admite programación estructurada estilo C. Anteriormente, JavaScript solo admitía el alcance de funciones utilizando 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. [13]
Al igual que los lenguajes de estilo C, el flujo de control se realiza con las declaraciones while
, for
, do
/ while
, if
/ else
y switch
. Las funciones están débilmente tipificadas y pueden aceptar y devolver cualquier tipo. Los argumentos no proporcionados son predeterminados undefined
.
ECMAScript tiene tipos débiles . Esto significa que ciertos tipos se asignan implícitamente según la operación que se realiza. 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 objeto de una charla titulada Wat . [14] [15]
ECMAScript se escribe dinámicamente. Por tanto, un tipo está asociado a un valor en lugar de a una expresión. ECMAScript admite varias formas de probar el tipo de objetos, incluida la escritura pato . [dieciséis]
Desde ES 2015, la transpilación de JavaScript se ha vuelto muy común. La transpilación es una compilación de fuente a 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 se transpilan a ES3 para mantener la compatibilidad con todas las versiones de navegadores. Los ajustes para transpilar a una versión específica se pueden configurar según las necesidades. La transpilación agrega un paso adicional al proceso de construcción y, a veces, se realiza para evitar la necesidad de polirellenos . Polyfills crea nuevas funciones para entornos más antiguos que carecen de ellas. Polyfills hace 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 durante la fase de desarrollo antes de que llegue al intérprete.
En 2010, Ecma International comenzó a desarrollar una prueba de estándares para Ecma 262 ECMAScript. [17] Test262 es un conjunto de pruebas de conformidad de 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 algunos requisitos específicos de la especificación ECMAScript. El desarrollo de Test262 es un proyecto del Comité Técnico 39 (TC39) de Ecma. El marco de pruebas y las pruebas individuales son aportados a Ecma por organizaciones miembros de TC39.
Google ( conjunto de pruebas Sputnik ) y Microsoft hicieron contribuciones importantes , quienes contribuyeron con miles de pruebas. El conjunto de pruebas Test262 constaba de38 014 pruebas a enero de 2020 [actualizar]. [18] Las especificaciones ECMAScript a través de ES7 son bien compatibles con los principales navegadores web . La siguiente tabla muestra la tasa de conformidad de las versiones actuales de software con respecto a las ediciones más recientes de ECMAScript.
El lenguaje de programación JavaScript principal se [...] basa en el estándar ECMAScript , o ES para abreviar.
{{cite journal}}
: Mantenimiento CS1: fecha y año ( enlace )