stringtranslate.com

ECMAScript

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]

ECMAScript, ECMA-262, JavaScript

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

Historia

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.

Historial de versiones

Características

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

Imperativo y estructurado

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

Al igual que los lenguajes de estilo C, el flujo de control se realiza con las declaraciones while, for, do/ while, if/ elsey switch. Las funciones están débilmente tipificadas y pueden aceptar y devolver cualquier tipo. Los argumentos no proporcionados son predeterminados undefined.

débilmente escrito

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]

Dinámica

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]

transpilando

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.

Conformidad

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

Ver 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 principal 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.{{cite journal}}: Mantenimiento CS1: fecha y año ( enlace )
  3. ^ "Node.js - ECMAScript 2015 (ES6) y más allá".
  4. ^ "Deno se une al esfuerzo de estándares de 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 . Infomundo. 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 secuencias de comandos de objetos abierto y multiplataforma para redes empresariales e Internet". Netscape.com . Netscape. 1995-12-04. Archivado desde el original el 6 de junio de 2002 . Consultado el 4 de noviembre de 2019 .
  9. ^ Comunicado de prensa (15 de noviembre de 1996). "Líderes de la industria avanzarán en la estandarización de JavaScript de Netscape en la reunión del organismo de normalización". Netscape.com . Netscape. Archivado desde el original el 3 de diciembre de 1998 . Consultado el 31 de octubre de 2013 .
  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 operativa para JavaScript" (PDF) . stanford.edu . Asociación para Maquinaria de Computación . Archivado (PDF) desde el original el 3 de enero de 2020 . Consultado el 3 de enero de 2020 .
  12. ^ "Acerca de". ECMAScript. Archivado desde el original el 2 de agosto de 2012 . Consultado el 17 de diciembre de 2009 .
  13. ^ David Flanagan (17 de agosto de 2006). JavaScript: la guía definitiva: la guía definitiva. "O'Reilly Media, Inc.". pag. 16.ISBN _ 978-0-596-55447-7. Archivado desde el original el 1 de agosto de 2020 . Consultado el 11 de noviembre de 2019 .
  14. ^ Bernhardt, Gary. Qué. CodeMash 2012. Destruya todo el software . Archivado desde el original el 28 de octubre de 2019 . Consultado el 18 de agosto de 2021 .
  15. ^ Gilbertson, Scott (26 de enero de 2012). "Chistes para nerds: momentos importantes en la programación". Cableado . Archivado desde el original el 23 de agosto de 2020 . Consultado el 22 de agosto de 2021 .
  16. ^ "Tipos de datos y estructuras de datos de JavaScript: JavaScript | MDN". Desarrollador.mozilla.org . 2017-02-16. Archivado desde el original el 14 de marzo de 2017 . Consultado el 24 de febrero de 2017 .
  17. ^ "Lenguaje ECMAScript - prueba262". Test262.ecmascript.org. Archivado desde el original el 14 de mayo de 2011 . Consultado el 31 de octubre de 2013 .
  18. ^ "tc39/prueba262". GitHub . 24 de enero de 2020. Archivado desde el original el 1 de octubre de 2019 . Consultado el 29 de enero de 2020 .
  19. ^ ES5 es la base para este conjunto de pruebas. La tasa de conformidad de otras ediciones refleja únicamente la compatibilidad con nuevas funciones, no una puntuación completa.
  20. ^ "Tabla de compatibilidad ECMAScript 5". kangax.github.io . Archivado desde el original el 19 de noviembre de 2018 . Consultado el 8 de noviembre de 2018 .
  21. ^ "Tabla de compatibilidad ECMAScript 6". kangax.github.io . Archivado desde el original el 17 de noviembre de 2018 . Consultado el 8 de noviembre de 2018 .
  22. ^ ab "Tabla de compatibilidad ECMAScript 2016+". kangax.github.io . Archivado desde el original el 24 de noviembre de 2018 . Consultado el 8 de noviembre de 2018 .
  23. ^ Puntuación compuesta que incluye nuevas funciones desde ES7 hasta los borradores de la próxima edición.