stringtranslate.com

Script ECMA

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]

ECMAScript, ECMA-262, JavaScript

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 .

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. [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.

Evolución

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]

Características

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

Imperativo y estructurado

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 lety 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/ elsey 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.

De tipado débil

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]

Dinámica

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]

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 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.

Conformidad

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. [ 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.

Véase también

Referencias

  1. ^ Stefanov, Stoyan (2010). Patrones de JavaScript. O'Reilly Media, Inc. pág. 5.ISBN​ 9781449396947. Archivado desde el original el 10 de junio de 2016 . Consultado el 12 de enero de 2016 . El lenguaje de programación JavaScript [...] se basa en el estándar ECMAScript , o ES para abreviar.
  2. ^ Wirfs-Brock, Allen; Eich, Brendan (2 de mayo de 2020). "JavaScript: Los primeros 20 años". Actas de la ACM sobre lenguajes de programación . 4 : 1–189. doi : 10.1145/3386327 . S2CID  219603695.
  3. ^ "Node.js — ECMAScript 2015 (ES6) y más allá".
  4. ^ "Deno se suma a los esfuerzos por establecer estándares para JavaScript". 14 de diciembre de 2021.
  5. ^ https://bun.sh/docs#:~:text=or%2C%20more%20formally%2C-,ECMAScript,-)%20is%20just%20a bollo
  6. ^ Guo, Shu-yu (14 de febrero de 2022). «Especificación del lenguaje ECMAScript® 2022». tc39.es . Archivado desde el original el 8 de mayo de 2020 . Consultado el 14 de febrero de 2022 .
  7. ^ Krill, Paul (23 de junio de 2008). "El creador de JavaScript reflexiona sobre el pasado y el futuro". infoworld.com . InfoWorld. Archivado desde el original el 20 de septiembre de 2014 . Consultado el 31 de octubre de 2013 .
  8. ^ "Netscape y Sun anuncian JavaScript, el lenguaje de programación de objetos multiplataforma abierto para redes empresariales e Internet". Netscape.com . Netscape. 1995-12-04. Archivado desde el original el 2002-06-06 . Consultado el 2019-11-04 .
  9. ^ Nota de prensa (15 de noviembre de 1996). "Los líderes de la industria promoverán la estandarización de JavaScript de Netscape en la reunión de organismos de normalización". Netscape.com . Netscape. Archivado desde el original el 1998-12-03 . Consultado el 2013-10-31 .
  10. ^ Eich, Brendan (3 de octubre de 2006). "¿Habrá un sufijo de archivo sugerido para es4?". mozilla.org . Mail.mozilla.org. Archivado desde el original el 21 de junio de 2020 . Consultado el 5 de mayo de 2021 .
  11. ^ Maffeis, Sergio; Mitchell, John C.; Taly, Ankur (3 de enero de 2020). "Una semántica operacional para JavaScript" (PDF) . stanford.edu . Association for Computing Machinery . Archivado (PDF) desde el original el 3 de enero de 2020 . Consultado el 3 de enero de 2020 .
  12. ^ "TC39", Comités técnicos , Ecma International , consultado el 11 de agosto de 2024
  13. ^ "El proceso TC39", TC39 , Ecma International , consultado el 11 de agosto de 2024
  14. ^ "ECMAScript, TC39 y la historia de JavaScript", ui.dev , consultado el 11 de agosto de 2024
  15. ^ "Acerca de". ECMAScript. Archivado desde el original el 2012-08-02 . Consultado el 2009-12-17 .
  16. ^ David Flanagan (17 de agosto de 2006). JavaScript: The Definitive Guide: The Definitive Guide. "O'Reilly Media, Inc.", pág. 16. ISBN 978-0-596-55447-7Archivado del original el 1 de agosto de 2020 . Consultado el 11 de noviembre de 2019 .
  17. ^ Bernhardt, Gary. Wat. CodeMash 2012. Destroy All Software . Archivado desde el original el 28 de octubre de 2019. Consultado el 18 de agosto de 2021 .
  18. ^ Gilbertson, Scott (26 de enero de 2012). "Chistes para nerds: momentos clave en la programación". Wired . Archivado desde el original el 23 de agosto de 2020. Consultado el 22 de agosto de 2021 .
  19. ^ "Tipos de datos y estructuras de datos de JavaScript – JavaScript | MDN". Developer.mozilla.org . 2017-02-16. Archivado desde el original el 2017-03-14 . Consultado el 2017-02-24 .
  20. ^ "Lenguaje ECMAScript – test262". Test262.ecmascript.org. Archivado desde el original el 2011-05-14 . Consultado el 2013-10-31 .
  21. ^ "tc39/test262". GitHub . 24 de enero de 2020. Archivado desde el original el 1 de octubre de 2019 . Consultado el 29 de enero de 2020 .
  22. ^ ES5 es la base de este conjunto de pruebas. El índice de conformidad de otras ediciones refleja únicamente la compatibilidad con nuevas funciones, no una puntuación completa.
  23. ^ "Tabla de compatibilidad de ECMAScript 5". compat-table.github.io . 2024-04-14. Archivado desde el original el 2024-01-14 . Consultado el 2024-04-14 .
  24. ^ "Tabla de compatibilidad de ECMAScript 6". compat-table.github.io . 2024-04-14. Archivado desde el original el 2024-04-04 . Consultado el 2024-04-14 .
  25. ^ "Tabla de compatibilidad de ECMAScript 2016+". compat-table.github.io . 2024-04-14. Archivado desde el original el 2024-01-14 . Consultado el 2024-04-14 .
  26. ^ "Tabla de compatibilidad de ECMAScript Next". compat-table.github.io . 2024-04-14. Archivado desde el original el 2024-01-14 . Consultado el 2024-04-14 .
  27. ^ Puntuación compuesta que incluye nuevas características desde ES7 hasta los borradores de la próxima edición