Articulo de referencia

ECMAScript

[[Ecma International]]"},"released":{"wt":"{{Start date and age|1997|06}}"},"latest release version":{"wt":"Edition 16"},"latest release date":{"wt":"{{start date and age|2025|0...

ECMAScript ( / ˈ ɛ k m ə s k r ɪ p t / ; ES ) [ 1 ] es el estándar para el lenguaje JavaScript , destinado a garantizar la interoperabilidad de las páginas web en diferentes navegadores web . [ a ] ​​[ 2 ] Está estandarizado por el comité técnico TC39 de Ecma International en el documento ECMA-262 , con las API i18n ("Intl") estandarizadas en el documento ECMA-402 . [ 3 ]

ECMAScript se usa comúnmente para la programación del lado del cliente en la World Wide Web , y cada vez se usa más para la programación del lado del servidor y los servicios que utilizan entornos de ejecución como Node.js , [ 4 ] Deno [ 5 ] y Bun . [ 6 ]

El estándar ECMAScript no incluye ninguna función de entrada/salida (E/S), como redes , almacenamiento o gráficos . En la práctica, el navegador web u otro sistema de ejecución proporciona API de JavaScript para la E/S.

Estándares

El Comité Técnico 39 de Ecma International publica múltiples estándares que definen JavaScript , formalmente conocido como ECMAScript. Estos incluyen la sintaxis del lenguaje, la semántica, las bibliotecas y las tecnologías complementarias que lo soportan. [ 7 ] [ 8 ] Los estándares se detallan a continuación.

Especificación del lenguaje ECMAScript (ECMA-262)

Define el lenguaje JavaScript, formalmente conocido como ECMAScript. [ 9 ] ECMA-262 solo especifica 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 .

Especificación de la API de internacionalización de ECMAScript (ECMA-402)

Define las API de i18n ( Intl) de JavaScript y es un complemento de ECMA-262. [ 10 ] Su funcionalidad se ha seleccionado de la de las API de internacionalización, como las de la biblioteca International Components for Unicode (ICU) del marco .NET o de la plataforma Java .

Sintaxis de intercambio de datos JSON (ECMA-404)

Define la sintaxis JSON (JavaScript Object Notation), un formato de archivo estándar abierto legible por humanos y un formato de intercambio de datos . [ 11 ] Se derivó de JavaScript, pero es un formato de datos independiente del lenguaje de programación .

Especificación del formato del mapa de origen (ECMA-426)

Define el formato del mapa de origen , utilizado para mapear el código fuente transpilado a sus fuentes originales. [ 12 ] El formato original del mapa de origen fue creado por Joseph Schorr para su uso en el proyecto de minificación Closure Inspector , con el fin de permitir la depuración a nivel de código fuente de JavaScript optimizado. En 2024, el formato del mapa de origen se publicó como estándar Ecma.

Historia

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. [ 13 ] En diciembre de 1995, Sun Microsystems y Netscape anunciaron JavaScript en un comunicado de prensa. [ 14 ] En noviembre de 1996, Netscape anunció una reunión de la organización de estándares Ecma International para avanzar en la estandarización de JavaScript. [ 15 ] 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 del 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 ". [ 16 ] ECMAScript se ha formalizado a través de la semántica operacional mediante el trabajo realizado en la Universidad de Stanford y el Departamento de Informática del Imperial College de Londres para el análisis y la estandarización de la seguridad. [ 17 ] "ECMA" significaba "Asociación Europea de Fabricantes de Computadoras" hasta 1994.

Evolución

El Comité Técnico 39 (TC39) de Ecma es responsable del mantenimiento de ECMAScript. [ 18 ] Las nuevas propuestas para el lenguaje pasan por un proceso por etapas, donde cada etapa representa la completitud de la especificación de la propuesta. Se debe alcanzar un consenso dentro del comité para avanzar una propuesta a la siguiente etapa. Las propuestas que llegan a la etapa 4, la etapa final, se incluirán en la siguiente versión del estándar. [ 19 ] Desde el lanzamiento de la versión 6 en junio de 2015, se han finalizado y publicado nuevas versiones principales cada junio. [ 20 ]

Características

El lenguaje ECMAScript incluye características estructuradas , dinámicas , funcionales y basadas en prototipos . [ 21 ]

Imperativo y estructurado

ECMAScript JavaScript admite la programación estructurada al estilo C. Anteriormente, JavaScript solo admitía el ámbito de función mediante la palabra clave var, pero ECMAScript 2015 añadió las palabras clave lety const, lo que permite que JavaScript admita tanto el ámbito de bloque como el ámbito de función. JavaScript admite la inserción automática de punto y coma , lo que significa que los puntos y coma que normalmente finalizan una instrucción en C pueden omitirse en JavaScript. [ 22 ]

Al igual que en los lenguajes de estilo C, el flujo de control se realiza con las sentencias while, for, do/ while, if/ else, y . Las funciones son de tipado débil y pueden aceptar y devolver cualquier tipo. Los argumentos no proporcionados se establecen por defecto en .switchundefined

De tipificación débil

ECMAScript es un lenguaje de tipado débil . Esto significa que ciertos tipos se asignan implícitamente según la operación que se realice. Sin embargo, existen algunas peculiaridades en la implementación de JavaScript para la conversión de una variable de un tipo a otro.

Dinámica

ECMAScript es de tipado dinámico. Por lo tanto, un tipo se asocia con un valor en lugar de con una expresión. ECMAScript admite varias formas de comprobar el tipo de los objetos, incluido el tipado dinámico (duck typing) . [ 23 ]

Transpilación

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 recientes de JavaScript, y un transpilador reescribe el código fuente para que sea compatible con navegadores antiguos. Generalmente, los transpiladores transpilan a ES3 para mantener la compatibilidad con todas las versiones de navegadores. La configuración para transpilar a una versión específica se puede ajustar según sea necesario. 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 funcionalidades para entornos 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 propio código ECMA durante la fase de compilación del desarrollo antes de que llegue al intérprete.

Conformidad

En 2010, Ecma International comenzó a desarrollar una prueba de estándares para Ecma 262 ECMAScript. [ 24 ] Test262 es un conjunto de pruebas de conformidad de ECMAScript que se puede utilizar para verificar qué tan fielmente una implementación de JavaScript sigue la especificación ECMAScript. El conjunto de pruebas contiene miles de pruebas individuales, cada una de las cuales verifica uno o más 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 las organizaciones miembros del TC39.

Google ( conjunto de pruebas Sputnik ) y Microsoft hicieron importantes contribuciones , aportando miles de pruebas cada uno. El conjunto de pruebas Test262 constaba de:38 014 pruebas realizadas hasta enero de 2020. . [ 25 ] Las especificaciones de ECMAScript hasta ES7 cuentan con un buen soporte en los principales navegadores web . La tabla a continuación muestra la tasa de conformidad de las versiones actuales del software con respecto a las ediciones más recientes de ECMAScript.

Véase también

Notas

  1. En el pasado, también se utilizó como estándar para JScript ( Internet Explorer ) y ActionScript ( Adobe Flash ).

Referencias

  1. ^ Stefanov, Stoyan (2010). Patrones de JavaScript . O'Reilly Media, Inc. pág.  5.ISBN 9781449396947. Archivado del original el 10-06-2016 . Recuperado el 12-01-2016 . El lenguaje de programación JavaScript principal [...] se basa en el estándar ECMAScript , o ES para abreviar.
  2. Wirfs-Brock, Allen; Eich, Brendan (2020-05-02). "JavaScript: Los primeros 20 años" . Actas de la ACM sobre lenguajes de programación . 4 (HOPL): 1–189 . doi : 10.1145/3386327 . S2CID 219603695 . 
  3. "Descripción general de las tecnologías JavaScript - JavaScript | MDN" . MDN Web Docs . 27 de octubre de 2025. Consultado el 25 de abril de 2026 .
  4. Wunder, C. " Node.js — ECMAScript 2015 (ES6) y más allá" . Node.js.
  5. "Deno se une a la iniciativa de estandarización de JavaScript" . 14 de diciembre de 2021.
  6. ^ https://bun.sh/docs#:~:text=or%2C%20more%20formally%2C-,ECMAScript,-)%20is%20just%20a bollo
  7. "TC39" . Ecma International . Consultado el 25 de abril de 2026 .
  8. "TC39 - Especificación de JavaScript" . tc39.es .
  9. Guo, Shu-yu (14 de febrero de 2022). "Especificación del lenguaje ECMAScript 2022" . tc39.es. Archivado del original el 8 de mayo de 2020. Consultado el 14 de febrero de 2022 .
  10. "Especificación de la API de internacionalización de ECMAScript 2027" . tc39.es. 17 de abril de 2026. Archivado del original el 24 de abril de 2026. Consultado el 26 de abril de 2026 .
  11. "ECMA-404" . Ecma International . Consultado el 25 de abril de 2026 .
  12. "Especificación del formato del mapa fuente" . tc39.es. 14 de marzo de 2026. Archivado del original el 24 de abril de 2026. Consultado el 26 de abril de 2026 .
  13. Krill, Paul (23 de junio de 2008). "El creador de JavaScript reflexiona sobre el pasado y el futuro" . infoworld.com . InfoWorld. Archivado del original el 20 de septiembre de 2014. Consultado el 31 de octubre de 2013 .
  14. "Netscape y Sun anuncian JavaScript, el lenguaje de scripting de objetos abierto y multiplataforma para redes empresariales e Internet" . Netscape.com . Netscape. 4 de diciembre de 1995. Archivado del original el 6 de junio de 2002. Consultado el 4 de noviembre de 2019 .
  15. Comunicado de prensa (15 de noviembre de 1996). "Líderes de la industria impulsarán la estandarización del JavaScript de Netscape en la reunión del organismo de estándares" . Netscape.com . Netscape. Archivado del original el 3 de diciembre de 1998. Consultado el 31 de octubre de 2013 .
  16. Eich, Brendan (3 de octubre de 2006). "¿Habrá un sufijo de archivo sugerido para es4?" . mozilla.org . Mail.mozilla.org. Archivado del original el 21 de junio de 2020. Recuperado el 5 de mayo de 2021 .
  17. Maffeis, Sergio; Mitchell, John C.; Taly, Ankur (2020-01-03). "Una semántica operacional para JavaScript" (PDF) . stanford.edu . Association for Computing Machinery . Archivado (PDF) del original el 2020-01-03 . Recuperado el 2020-01-03 .
  18. "TC39" , Comités Técnicos , Ecma International , consultado el 11 de agosto de 2024
  19. "El proceso TC39" , TC39 , Ecma International , consultado el 11 de agosto de 2024
  20. "ECMAScript, TC39 y la historia de JavaScript" , ui.dev , consultado el 11 de agosto de 2024
  21. "Acerca de" . ECMAScript . Consultado el 17 de diciembre de 2009 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  22. Flanagan, David (17 de agosto de 2006). JavaScript: La guía definitiva (5.ª ed.). O'Reilly. pág. 16. ISBN   978-0-596-10199-2.
  23. "Tipos de datos y estructuras de datos de JavaScript – JavaScript | MDN" . Developer.mozilla.org . 16 de febrero de 2017. Archivado del original el 14 de marzo de 2017. Consultado el 24 de febrero de 2017 .
  24. "Lenguaje ECMAScript – test262" . Test262.ecmascript.org. Archivado del original el 14 de mayo de 2011. Consultado el 31 de octubre de 2013 .
  25. "tc39/test262" . GitHub . 24 de enero de 2020. Archivado del original el 1 de octubre de 2019. Consultado el 29 de enero de 2020 .
  26. ES5 es la versión de referencia para este conjunto de pruebas. El índice de conformidad para otras ediciones refleja únicamente la compatibilidad con las nuevas características, no una puntuación global.
  27. "Tabla de compatibilidad de ECMAScript 5" . compat-table.github.io . 14 de abril de 2024. Archivado del original el 14 de enero de 2024. Consultado el 14 de abril de 2024 .
  28. "Tabla de compatibilidad de ECMAScript 6" . compat-table.github.io . 14/04/2024. Archivado del original el 04/04/2024 . Consultado el 14/04/2024 .
  29. "Tabla de compatibilidad de ECMAScript 2016+" . compat-table.github.io . 14/04/2024. Archivado del original el 14/01/2024 . Consultado el 14/04/2024 .
  30. "Tabla de compatibilidad de ECMAScript Next" . compat-table.github.io . 14 de abril de 2024. Archivado del original el 14 de enero de 2024. Consultado el 14 de abril de 2024 .
  31. Puntuación compuesta que incluye las nuevas características desde ES7 hasta los borradores de la próxima edición.