stringtranslate.com

Historial de versiones de ECMAScript

ECMAScript es un estándar de JavaScript desarrollado por Ecma International . Desde 2015, cada mes de junio se publican versiones principales.

ECMAScript 2023, la versión 14 y actual, se lanzó en junio de 2023.

Versiones

En junio de 2004, Ecma International publicó el estándar ECMA-357, que define una extensión de ECMAScript, conocida como ECMAScript para XML (E4X). Ecma también definió un "Perfil compacto" para ECMAScript, conocido como ES-CP o ECMA 327, que fue diseñado para dispositivos con recursos limitados, que fue retirado en 2015. [12]

4ta edición (abandonada)

La cuarta edición propuesta de ECMA-262 ( ECMAScript 4 o ES4 ) habría sido la primera actualización importante de ECMAScript desde que se publicó la tercera edición en 1999. La especificación (junto con una implementación de referencia) originalmente estaba prevista para completarse en octubre de 2008. [13] El primer borrador data de febrero de 1999. [14] El grupo de trabajo publicó una descripción general del lenguaje el 23 de octubre de 2007. [15]

En agosto de 2008, la propuesta de la cuarta edición de ECMAScript se había reducido a un código de proyecto denominado ECMAScript Harmony. Las características que se estaban discutiendo para Harmony en ese momento incluían:

La intención de estas características era en parte soportar mejor la programación en general y permitir sacrificar parte de la capacidad del script para ser dinámico para mejorar el rendimiento. Por ejemplo, Tamarin – la máquina virtual para ActionScript, desarrollada y de código abierto por Adobe – tiene soporte de compilación justo a tiempo (JIT) para ciertas clases de scripts.

Además de introducir nuevas funciones, se propuso corregir algunos errores de ES3 en la edición 4. [16] [17] Estas correcciones y otras, y la compatibilidad con la codificación/decodificación JSON , se han incluido en la especificación ECMAScript, quinta edición. [18]

El trabajo comenzó en la Edición 4 después de que se completó la especificación ES-CP (Compact Profile) y continuó durante aproximadamente 18 meses donde se logró un lento progreso equilibrando la teoría de la especificación JavaScript 2 de Netscape con la experiencia de implementación de JScript .NET de Microsoft. Después de un tiempo, la atención se centró en el estándar ECMAScript para XML (E4X). La actualización no ha estado exenta de polémica. A finales de 2007, un debate entre Eich, más tarde director de tecnología de la Fundación Mozilla , y Chris Wilson, arquitecto de la plataforma de Microsoft para Internet Explorer , se hizo público en varios blogs . Wilson advirtió que debido a que los cambios propuestos a ECMAScript lo hacían incompatible en algunos aspectos con versiones anteriores del lenguaje, la actualización equivalía a "romper la Web", [19] y que las partes interesadas que se oponían a los cambios estaban siendo "ocultadas de la vista". . [20] Eich respondió afirmando que Wilson parecía estar "repitiendo falsedades en blogs" y negó que hubiera un intento de suprimir la disidencia y desafió a los críticos a dar ejemplos específicos de incompatibilidad. [21] Señaló que Microsoft Silverlight y Adobe AIR se basan en C# y ActionScript 3 respectivamente, los cuales son más grandes y complejos que ECMAScript Edition 3. [22]

Quinta edición – ECMAScript 2009

Yahoo, Microsoft, Google y otros disidentes de la cuarta edición formaron su propio subcomité para diseñar una actualización menos ambiciosa de ECMAScript 3, tentativamente denominada ECMAScript 3.1. Esta edición se centraría en la seguridad y las actualizaciones de la biblioteca, con un gran énfasis en la compatibilidad. Después del enfrentamiento público antes mencionado, los equipos de ECMAScript 3.1 y ECMAScript 4 acordaron un compromiso: se trabajaría en las dos ediciones, en paralelo, con coordinación entre los equipos para garantizar que ECMAScript 3.1 siga siendo un subconjunto estricto de ECMAScript 4 tanto en semántica como en sintaxis.

Sin embargo, las diferentes filosofías de cada equipo dieron como resultado repetidas violaciones de la regla del subconjunto, y seguía siendo dudoso que los disidentes de ECMAScript 4 alguna vez apoyaran o implementaran ECMAScript 4 en el futuro. Después de más de un año desde el desacuerdo sobre el futuro de ECMAScript dentro del Comité Técnico 39 de Ecma, los dos equipos llegaron a un nuevo compromiso en julio de 2008: Brendan Eich anunció que Ecma TC39 centraría su trabajo en ECMAScript 3.1 (posteriormente rebautizado como ECMAScript, 5.º Edition) con plena colaboración de todas las partes, y los proveedores apuntarían a al menos dos implementaciones interoperables a principios de 2009. [23] [24] En abril de 2009, Ecma TC39 publicó el borrador "final" de la quinta edición y anunció que las pruebas de Se esperaba que las implementaciones interoperables se completaran a mediados de julio. [25] El 3 de diciembre de 2009 se publicó la quinta edición de ECMA-262. [26]

Las adiciones incluyen JSON , String.trim()para eliminar fácilmente los espacios en blanco que rodean una cadena ( " example "to "example"), String.charAt()para devolver un solo carácter desde una posición determinada en una cadena y Array.isArray(). Una coma después del último par de valores de un objeto ( var example = { "property1":"value1", "property2":"value2", }) tampoco provoca un error de sintaxis. [27]

6ta Edición – ECMAScript 2015

La sexta edición, ECMAScript 6 ( ES6 ) y luego renombrada a ECMAScript 2015, se finalizó en junio de 2015. [4] [28] Esta actualización agrega una sintaxis nueva e importante para escribir aplicaciones complejas, incluidas declaraciones de clases ( ), módulos ES6 como , pero los define semánticamente en los mismos términos que el modo estricto de ECMAScript 5. Otras características nuevas incluyen iteradores y bucles, generadores de estilo Python , expresión de función de flecha ( ), palabras clave para declaraciones locales, palabras clave para declaraciones locales constantes, datos binarios, matrices escritas, nuevas colecciones (mapas, conjuntos y WeakMap), promesas , números y mejoras matemáticas, reflexión, proxies (metaprogramación para objetos virtuales y envoltorios) y literales de plantilla que utilizan comillas invertidas ( ) para cadenas de varias líneas sin caracteres de escape . [29] [30] La lista completa es extensa. [31] [32] Como la primera especificación "ECMAScript Harmony", también se la conoce como "ES6 Harmony".class Foo { ... }import * as moduleName from "..."; export const Foofor...of() => {...}letconst`

Séptima edición – ECMAScript 2016

La séptima edición, o ECMAScript 2016, se finalizó en junio de 2016. [5] Sus características incluyen alcance de bloque de variables y funciones, patrones de desestructuración (de variables), llamadas de cola adecuadas , operador de exponenciación **para números, awaitpalabras asyncclave para programación asincrónica ( como preparación para ES2017), y la Array.prototype.includesfunción. [5] [33]

El operador de exponenciación es equivalente a Math.pow, pero proporciona una sintaxis más simple similar a lenguajes como Python, F#, Perl y Ruby. async/ awaitfue aclamado como una forma más sencilla de utilizar promesas y desarrollar código asincrónico.

Octava edición – ECMAScript 2017

La octava edición, o ECMAScript 2017, se finalizó en junio de 2017. [6] Sus características incluyen Object.values, Object.entriesy Object.getOwnPropertyDescriptorsfunciones para una fácil manipulación de Objetos, async/ awaitconstrucciones que usan generadores y promesas, y características adicionales para concurrencia y atómica . También incluye String.prototype.padStart(). [34] [6]

9ª Edición – ECMAScript 2018

La novena edición, o ECMAScript 2018, finalizó en junio de 2018. [7] Las nuevas características incluyen el operador de extensión y los parámetros de descanso ( ...) para literales de objetos, iteración asincrónica Promise.prototype.finallyy adiciones a RegExp. [7]

El operador de extensión permite copiar fácilmente las propiedades del objeto, como se muestra a continuación.

dejar objeto = { a : 1 , b : 2 }      let objectClone = Objeto . asignar ({}, objeto ) // antes de ES2018 let objectClone = {... objeto } // sintaxis de ES2018         let otherObject = { c : 3 , ... object } consola . iniciar sesión ( otroObjeto ) // -> {c: 3, a: 1, b: 2}      

Décima edición – ECMAScript 2019

La décima edición, o ECMAScript 2019, se publicó en junio de 2019. [8] Las características agregadas incluyen, entre otras Array.prototype.flat, Array.prototype.flatMapcambios en Array.sorty Object.fromEntries. [8]

Array.sortahora se garantiza que es estable , lo que significa que los elementos con claves de clasificación iguales no cambiarán el orden relativo antes y después de la operación de clasificación. Array.prototype.flat(depth=1)aplana una matriz a una profundidad especificada, lo que significa que todos los elementos del subarreglo (hasta la profundidad especificada) se concatenan de forma recursiva.

Otro cambio notable es que el llamado enlace de captura pasó a ser opcional. [35]

11.ª edición – ECMAScript 2020

La undécima edición, o ECMAScript 2020, se publicó en junio de 2020. [9] Además de nuevas funciones, esta versión introduce un BigInttipo primitivo para enteros de tamaño arbitrario, el operador coalescente nulo y el objeto globalThis . [9]

Los BigInts se crean con el BigIntconstructor o con la sintaxis 10n, donde se coloca "n" después del número literal. BigInts permite la representación y manipulación de números enteros más allá de Number.MAX_SAFE_INTEGER, mientras que los números se representan mediante un valor IEEE 754 de 64 bits de doble precisión. Las funciones integradas Mathno son compatibles con BigInts; por ejemplo, la exponenciación de BigInts se debe realizar con el **operador en lugar de Math.pow.

El operador coalescente nulo ??, devuelve su operando del lado derecho cuando su lado izquierdo es nullo undefined. Esto contrasta con el ||operador, que devolvería "string"todos los valores "falsos", como los siguientes.

indefinido ?? "cadena" // -> "cadena" nula ?? "cadena" // -> "cadena" falsa ?? "cadena" // -> falso NaN ?? "cadena" // -> NaN            

El encadenamiento opcional permite acceder a las propiedades anidadas de un objeto sin tener una verificación AND en cada nivel. Un ejemplo es const zipcode = person?.address?.zipcode. Si alguna de las propiedades no está presente, zipcodeserá undefined.

12.a edición – ECMAScript 2021

La duodécima edición, ECMAScript 2021, se publicó en junio de 2021. [10] Esta versión presenta el replaceAllmétodo para cadenas; Promise.any, un combinador de promesas que provoca un cortocircuito cuando se cumple un valor de entrada; AggregateError, un nuevo tipo de error para representar múltiples errores a la vez; operadores de asignación lógica ( ??=, &&=, ||=); WeakRef, para hacer referencia a un objeto de destino sin preservarlo de la recolección de basura, y FinalizationRegistry, para gestionar el registro y la cancelación del registro de las operaciones de limpieza realizadas cuando los objetos de destino se recolectan como basura; separadores para literales numéricos ( 1_000); y Array.prototype.sortse hizo más preciso, reduciendo la cantidad de casos que resultan en un orden de clasificación definido por la implementación.

13.ª edición – ECMAScript 2022

La decimotercera edición, ECMAScript 2022, se publicó en junio de 2022. [11] Esta versión presenta el nivel superior await, lo que permite que la palabra clave se utilice en el nivel superior de los módulos; nuevos elementos de clase: campos de instancia públicos y privados, campos estáticos públicos y privados, métodos y descriptores de acceso de instancia privados, y métodos y descriptores de acceso estáticos privados; bloques estáticos dentro de clases, para realizar la inicialización de evaluación por clase; la #x in objsintaxis, para comprobar la presencia de campos privados en los objetos; índices de coincidencia de expresiones regulares/d a través de la bandera, que proporciona índices de inicio y fin para subcadenas coincidentes; la causepropiedad sobre Errorlos objetos, que puede utilizarse para registrar una cadena de causalidad en errores; el atmétodo para Strings, Arrays y TypedArrays, que permite la indexación relativa; y Object.hasOwnuna alternativa conveniente a Object.prototype.hasOwnProperty.

14ª Edición – ECMAScript 2023

La decimocuarta edición, ECMAScript 2023, se publicó en junio de 2023. [36] Esta versión presenta los métodos toSorted, toReversed, with, findLasty findLastIndexen Array.prototypey TypedArray.prototype, así como el toSplicedmétodo en Array.prototype; se agregó soporte para comentarios #! shebang al comienzo de los archivos para facilitar mejor los archivos ECMAScript ejecutables; y permitió el uso de la mayoría de los símbolos como claves en colecciones débiles.

ES.Siguiente

ES.Next es un nombre dinámico que se refiere a la próxima versión al momento de escribir este artículo. Las características de ES.Next incluyen propuestas terminadas (también conocidas como "propuestas de etapa 4") enumeradas en propuestas terminadas que no forman parte de una especificación ratificada. El comité de idiomas sigue un modelo de "especificaciones vivas", por lo que estos cambios son parte del estándar y la ratificación es una formalidad. [37]

Referencias

  1. ^ "DevEdge Online: manual de referencia de JavaScript en línea". Archivado desde el original el 14 de junio de 1997 . Consultado el 13 de octubre de 2023 .{{cite web}}: Mantenimiento CS1: bot: estado de la URL original desconocido ( enlace )
  2. ^ "Referencia de JavaScript". Archivado desde el original el 20 de abril de 1999 . Consultado el 13 de octubre de 2023 .{{cite web}}: Mantenimiento CS1: bot: estado de la URL original desconocido ( enlace )
  3. ^ Archivado en Ghostarchive y Wayback Machine: "Cambios en JavaScript, Parte 1: EcmaScript 5". YouTube. 2009-05-18 . Consultado el 31 de octubre de 2013 .
  4. ^ ab "Especificación del lenguaje ECMAScript 2015". ECMA Internacional . Junio ​​de 2015. Archivado desde el original el 14 de febrero de 2022 . Consultado el 28 de junio de 2021 .
  5. ^ abc "Especificación del lenguaje ECMAScript 2016". ECMA Internacional . Junio ​​de 2016. Archivado desde el original el 14 de febrero de 2022 . Consultado el 28 de junio de 2021 .
  6. ^ abc "Especificación del lenguaje ECMAScript 2017". ECMA Internacional . Junio ​​de 2017. Archivado desde el original el 17 de enero de 2021 . Consultado el 28 de junio de 2021 .
  7. ^ abc "Especificación del lenguaje ECMAScript 2018". ECMA Internacional . Junio ​​de 2018. Archivado desde el original el 14 de febrero de 2022 . Consultado el 28 de junio de 2021 .
  8. ^ abc "Especificación del lenguaje ECMAScript 2019". ECMA Internacional . Junio ​​de 2019. Archivado desde el original el 14 de febrero de 2022 . Consultado el 28 de junio de 2021 .
  9. ^ abc "Especificación del lenguaje ECMAScript 2020". ECMA Internacional . Junio ​​de 2020. Archivado desde el original el 18 de enero de 2021 . Consultado el 28 de junio de 2021 .
  10. ^ ab "Especificación del lenguaje ECMAScript 2021". ECMA Internacional . Junio ​​de 2021. Archivado desde el original el 24 de junio de 2021 . Consultado el 26 de junio de 2021 .
  11. ^ ab "Ecma-262".
  12. Notas de la reunión del 24 de marzo de 2015 Archivado el 23 de junio de 2017 en Wayback Machine . ESDiscutir. Véase también Normas retiradas de Ecma Archivado el 13 de agosto de 2015 en Wayback Machine . ECMA.
  13. ^ Hansen, Lars T (22 de octubre de 2007). "Publicación del documento general de ES4". mozilla.org . Mail.mozilla.org. Archivado desde el original el 2 de noviembre de 2013 . Consultado el 31 de octubre de 2013 .
  14. ^ Peyrott, Sebastián (4 de marzo de 2021). "La verdadera historia detrás de ECMAScript 4". auth0.com . Archivado desde el original el 12 de mayo de 2020 . Consultado el 5 de marzo de 2020 .
  15. ^ "Cuarta edición de ECMAScript propuesta: descripción general del lenguaje" (PDF) . ecmascript.org . 23 de octubre de 2007. Archivado desde el original (PDF) el 23 de diciembre de 2010.
  16. ^ John Resig. "John Resig: corrección de errores en JavaScript 2". Ejohn.org. Archivado desde el original el 2 de noviembre de 2013 . Consultado el 31 de octubre de 2013 .
  17. ^ "Compatibilidad entre ES3 y ES4 propuesto" (PDF) . Ecmascript.org. Archivado desde el original (PDF) el 24 de julio de 2014 . Consultado el 31 de octubre de 2013 .
  18. ^ "Especificación del lenguaje ECMAScript" (PDF) . ECMA Internacional . 2009-04-19. Archivado desde el original (PDF) el 19 de abril de 2009 . Consultado el 19 de marzo de 2018 .
  19. ^ "ECMAScript 3 y más allá - IEBlog - Inicio del sitio - Blogs de MSDN". Blogs.msdn.com. 30 de octubre de 2007. Archivado desde el original el 11 de febrero de 2010 . Consultado el 31 de octubre de 2013 .
  20. ^ "Lo que pienso sobre ES4. - ¡Albatross! - Inicio del sitio - Blogs de MSDN". Blogs.msdn.com. 2007-10-31. Archivado desde el original el 27 de enero de 2010 . Consultado el 31 de octubre de 2013 .
  21. ^ "Carta abierta a Chris Wilson". Brendan Eich. 2007-10-31. Archivado desde el original el 16 de septiembre de 2011 . Consultado el 31 de octubre de 2013 .
  22. ^ "JavaScript 2 y la Web abierta". 2007-11-20. Archivado desde el original el 10 de febrero de 2014 . Consultado el 20 de enero de 2014 .
  23. ^ "Armonía ECMAScript". Mail.mozilla.org. 13 de agosto de 2008. Archivado desde el original el 26 de agosto de 2013 . Consultado el 31 de octubre de 2013 .
  24. ^ "Un hito importante en la estandarización de JavaScript - Blog de JScript - Inicio del sitio - Blogs de MSDN". Blogs.msdn.com. 2009-04-09. Archivado desde el original el 23 de marzo de 2010 . Consultado el 31 de octubre de 2013 .
  25. ^ "Ecma International finaliza una revisión importante de ECMAScript". ECMA Internacional. 2009-04-09. Archivado desde el original el 4 de septiembre de 2011 . Consultado el 22 de mayo de 2009 .
  26. ^ "Noticias anteriores de Ecma". Ecma-international.org. Archivado desde el original el 16 de abril de 2020 . Consultado el 29 de marzo de 2020 .
  27. ^ Versiones de JavaScript de W3schools
  28. ^ Krill, Paul. "Es oficial: ECMAScript 6 está aprobado". InfoMundo . Archivado desde el original el 23 de marzo de 2018 . Consultado el 19 de marzo de 2018 .
  29. ^ "Cinco excelentes funciones en EcmaScript 6 (ES6 Harmony) - Wintellect". Wintellect . 2014-03-24. Archivado desde el original el 22 de julio de 2017 . Consultado el 19 de marzo de 2018 .
  30. ^ "ECMAScript 6 (ES6): novedades de la próxima versión de JavaScript". Revista aplastante . 2015-10-28. Archivado desde el original el 24 de noviembre de 2017 . Consultado el 19 de marzo de 2018 .
  31. ^ "ECMAScript 6: Nuevas funciones: descripción general y comparación". es6-features.org . Archivado desde el original el 18 de marzo de 2018 . Consultado el 19 de marzo de 2018 .
  32. ^ "Estándar ECMA-262, sexta edición / junio de 2015 Especificación del lenguaje ECMAScript 2015 14.2 Definiciones de funciones de flecha". www.ecma-international.org . 2015. Archivado desde el original el 14 de febrero de 2022 . Consultado el 28 de junio de 2021 .
  33. ^ Saboff, Michael (23 de mayo de 2016). "Llamadas de cola adecuadas de ECMAScript 6 en WebKit". Kit web . Archivado desde el original el 11 de abril de 2019 . Consultado el 11 de abril de 2019 .
  34. ^ "ECMAScript 2017 (ES8): el conjunto de funciones final". 2alidad . Archivado desde el original el 23 de abril de 2018 . Consultado el 23 de abril de 2018 .
  35. ^ "ES2019: enlace de captura opcional". 2ality.com . 2017-08-13 . Consultado el 26 de abril de 2022 .
  36. ^ "Especificación del lenguaje ECMAScript 2023". ECMA Internacional . Junio ​​de 2023 . Consultado el 30 de junio de 2023 .
  37. ^ "ES.Next es la próxima edición de la especificación del lenguaje ECMAScript: Tuto Javascript". gdevops.gitlab.io . Consultado el 5 de julio de 2023 .

enlaces externos

JavaScript 1.0

Normas ISO

Estándares ECMA