es6 - ¿Cuál es la diferencia entre JavaScript y ECMAScript?
java es6 (17)
¿Cuál es la diferencia entre ECMAScript y JavaScript? De lo que deduje, ECMAScript es el estándar y JavaScript es la implementación. ¿Es esto correcto?
JavaScript = ECMAScript + DOM API ;
La especificación de lenguaje ECMAScript® define toda la lógica para crear y editar objetos, matrices, números, etc.
La API DOM permite la comunicación con documentos HTML / XML (por ejemplo,
document.getElementById(''id'');
).
Historial de nombres de JavaScript:
Mocha ► LiveScript ► JavaScript ► (parte de JS resultó en) ECMA-262 ► ECMAScript ► JavaScript (consiste en ECMAScript + DOM API)
A mi entender, ECMAScript es la "Teoría" o "Especificación", y Javascript es "Prácticas" o "Implementación".
Aquí están mis conclusiones:
JavaScript: The Definitive Guide , escrito por David Flanagan, proporciona una explicación muy concisa:
JavaScript se creó en Netscape en los primeros días de la Web, y técnicamente, "JavaScript" es una marca comercial con licencia de Sun Microsystems (ahora Oracle) utilizada para describir la implementación del lenguaje por parte de Netscape (ahora Mozilla). Netscape envió el lenguaje para la estandarización a ECMA y, debido a problemas con las marcas registradas, la versión estandarizada del idioma se atascó con el incómodo nombre "ECMAScript". Por las mismas razones de marca registrada, la versión de Microsoft del lenguaje se conoce formalmente como "JScript". En la práctica, casi todos llaman al lenguaje JavaScript.
Una publicación de blog de Microsoft parece estar de acuerdo con lo que explica Flanagan al decir ...
ECMAScript es el nombre oficial del lenguaje JavaScript que todos conocemos y amamos.
... lo que me hace pensar que todas las apariciones de JavaScript
en this publicación de referencia (nuevamente por Microsoft) deben ser reemplazadas por ECMASCript
. En realidad, parecen tener cuidado al usar ECMAScript
solo en this página de documentación más reciente y más técnica.
w3schools.com parece estar de acuerdo con las definiciones anteriores:
JavaScript fue inventado por Brendan Eich en 1995 y se convirtió en un estándar de ECMA en 1997. ECMA-262 es el nombre oficial del estándar. ECMAScript es el nombre oficial del idioma.
La clave aquí es: el nombre oficial del idioma .
Si verifica las páginas de la versión de JavaScript de Mozilla , encontrará la siguiente declaración:
Obsoleto. La versión explícita y la inclusión de las características del idioma fueron específicas de Mozilla y están en proceso de ser eliminadas. Firefox 4 fue la última versión que se refería a una versión de JavaScript (1.8.5). Con los nuevos estándares de ECMA, las características del lenguaje JavaScript ahora se mencionan a menudo con su definición inicial en las ediciones ECMA-262, como ECMAScript 2015.
y cuando vea las notas de la versión reciente, siempre verá referencias a los estándares de ECMAScript, como:
Se ha implementado la propiedad Symbol.toStringTag de ES2015 (error 1114580).
Se implementaron los métodos TypedArray.prototype.toString () y TypedArray.prototype.toLocaleString () ES2015 (error 1121938)
Mozilla Web Docs también tiene una page que explica la diferencia entre ECMAScript y JavaScript:
Sin embargo, el término general "JavaScript" tal como se entiende en el contexto de un navegador web contiene varios elementos muy diferentes. Uno de ellos es el lenguaje central (ECMAScript), otro es la recopilación de las API web, incluido el DOM (Modelo de objetos de documento).
Conclusión
A mi entender, la gente usa la palabra JavaScript de forma un tanto liberal para referirse a la especificación central de ECMAScript.
Diría que todas las implementaciones modernas de JavaScript (o motores de JavaScript) son implementaciones ECMAScript. Verifique la definición del motor V8 de Google, por ejemplo:
V8 es el motor de JavaScript de código abierto de alto rendimiento de Google, escrito en C ++ y utilizado en Google Chrome, el navegador de código abierto de Google y en Node.js, entre otros. Implementa ECMAScript como se especifica en ECMA-262.
Parece que usan la palabra JavaScript y ECMAScript indistintamente, y yo diría que en realidad es un motor ECMAScript.
Así que la mayoría de los motores de JavaScript están implementando el estándar ECMAScript, pero en lugar de llamarlos motores de ECMAScript, se llaman motores de JavaScript. This respuesta también apoya la forma en que veo la situación.
Creo que se debe una pequeña lección de historia.
JavaScript se llamó originalmente Mocha y se cambió a Livescript, pero finalmente se convirtió en JavaScript.
Es importante tener en cuenta que JavaScript llegó antes de ECMAscript y la historia le dirá por qué.
Para comenzar desde el principio, JavaScript obtuvo su nombre de Java y, inicialmente, se le pidió a Brendan Eich (el creador de JS) que desarrollara un lenguaje que se parecía a Java para la web de Netscape.
Sin embargo, Eich decidió que Java era demasiado complicado con todas sus reglas y se propuso crear un lenguaje más simple que incluso un principiante podría codificar. Esto es evidente en cosas como la relajación de la necesidad de tener un punto y coma.
Una vez que se completó el lenguaje, el equipo de marketing de Netscape solicitó a Sun que les permitiera nombrarlo como un truco de marketing y, por lo tanto, la mayoría de las personas que nunca han usado JavaScript piensan que está relacionado con Java.
Aproximadamente un año o dos después del lanzamiento de JavaScript en el navegador, el IE de Microsoft tomó el lenguaje y comenzó a realizar sus propias implementaciones, como JScript. Al mismo tiempo, IE estaba dominando el mercado y no mucho después de que Netscape tuvo que cerrar su proyecto.
Antes de que Netscape cayera, decidieron comenzar un estándar que guiaría la ruta de JavaScript, llamada ECMAScript.
ECMAScript tuvo algunos lanzamientos y en 1999 lanzaron su última versión (ECMAScript 3) antes de entrar en hibernación durante los próximos 10 años. Durante estos 10 años, Microsoft dominó las escenas, pero al mismo tiempo no estaban mejorando su producto y, por lo tanto, nació Firefox (dirigido por Eich) y un montón de otros navegadores como Chrome, Opera.
ECMAScript lanzó su 5ta edición en 2009 (la 4ta edición fue abandonada) con características como el modo estricto. Desde entonces, ECMAScript ha ganado mucho impulso y está programado para lanzar su 6ª Edición en unos meses a partir de ahora con los cambios más grandes que ha tenido hasta ahora.
Puede usar una lista de características para ECMAScript 6 aquí http://kangax.github.io/es5-compat-table/es6/ y también la compatibilidad con el navegador. Incluso puede comenzar a escribir Ecmascript 6 como lo hace con CoffeeScript y usar un compilador para compilar hasta Ecmascript 5.
Si ECMAScript es el idioma y JavaScript es un dialecto es discutible, pero no importante. Si sigues pensando así, podría confundirte. No hay ningún compilador por ahí que ejecute ECMAScript, y creo que JavaScript se considera el idioma que implementa un estándar llamado ECMAScript.
También hay otros lenguajes visibles que implementan ECMAScript como ActionScript (usado para Flash)
Dudo que alguna vez usaríamos la palabra "ECMAScript" si no fuera por el hecho de que el nombre "JavaScript" es propiedad de Sun. Para todos los efectos, el lenguaje es JavaScript. No vas a la librería en busca de libros de ECMAScript, ¿verdad?
Es un poco demasiado simple decir que "JavaScript" es la implementación. JScript es la implementación de Microsoft.
ECMAScript es el lenguaje, mientras que JavaScript, JScript e incluso ActionScript 3 se denominan "dialectos". Wikipedia arroja algo de luz sobre esto.
ECMAScript no es más que un estándar o especificación definida para crear diferentes lenguajes de scripting y uno de ellos es JavaScript. Ha sido creado con el único propósito de la compatibilidad entre navegadores.
Un estándar garantiza que si alguien escribe un código siguiendo las reglas del estándar, entonces el código funcionará bien en un navegador (en caso de javascript) si el navegador implementa el mismo estándar.
¿Por qué necesitamos un estándar?
Cuando Javascript fue creado por primera vez por Netscape, hubo una guerra entre todos los proveedores de navegadores en el mercado. Microsoft implementó su propia versión de javascript en internet explorer. Del mismo modo otros proveedores de navegadores implementaron sus propias versiones.
Todo esto creó un gran problema para los desarrolladores. Un código funcionó bien en Netscape pero fue un desperdicio total en Internet Explorer. Para resolver la compatibilidad entre navegadores, Javascript fue estandarizado por ECMA internacional; De ahí el nombre ECMAscript.
Todos los browers acordaron implementar ECMAscript (aunque tomó mucho tiempo).
El resultado es que ahora el mismo código funciona bien en todos los navegadores.
La excepción es DOM (modelo de objeto de documento). DOM todavía se interpreta de diferentes maneras en diferentes navegadores. Sin embargo, hay buenas noticias . Lentamente todos los navegadores se adhieren al mismo estándar DOM.
JavaScript es un lenguaje ECMAScript.
ECMAScript no es necesariamente JavaScript.
JavaScript es una rama de los lenguajes formados alrededor del estándar ECMAScript. Creo que ECMA es la Asociación Europea de Fabricantes de Computadoras, no es que esto sea realmente relevante ni nada.
No olvide que otro lenguaje popular formado alrededor del estándar ECMA Script es ActionScript, utilizado en Adobe Flash / Flex.
Javascript fue el nombre original, destinado a capitalizar la popularidad de Java. ECMA es el organismo de estándares que supervisa el estándar que finalmente se implementó, por lo que los nombres son aproximadamente equivalentes.
Las implementaciones tienen otros nombres, como V8 o Rhino, etc.
Las respuestas existentes parafrasean el punto principal bastante bien.
El punto principal es que ECMAScript es el lenguaje abstracto simple, sin ninguna extensión de dominio específico, es inútil en sí mismo. La ECMAScript define solo el lenguaje y los objetos centrales de la misma.
Mientras que JavaScript y ActionScript y otros dialectos le agregan la biblioteca específica del dominio, así que puedes usarlo para algo significativo.
Hay muchos motores ECMAScript , algunos de ellos son de código abierto, otros son propietarios. Puede vincularlos a su programa y luego agregar sus funciones nativas al objeto global para que su programa se convierta en un script. Aunque la mayoría de las veces se utilizan en los navegadores.
Sé que este es un post antiguo, pero espero que esto ayude a alguien.
En la década de 1990, las diferentes versiones de js comenzaron a aparecer como javascript de netscape, Js script de Microsoft. Así que ecmascript fue introducido como un estándar. Pero ecmascript solo forma una parte de javascript que especifica su sintaxis central, tipos, objetos, etc. Probablemente eso explica las implementaciones inconsistentes de javascript en diff. navegadores
Referencia - Wrox (Javascript profesional para desarrolladores web)
Técnicamente, ECMAScript es el lenguaje que todos usan e implementan, es la especificación creada hace muchos años cuando Netscape y Microsoft se sentaron e intentaron estandarizar las secuencias de comandos entre JavaScript (lenguaje de scripts de Netscape) y JScript (Microsoft).
Posteriormente, todos estos motores están implementando ostensiblemente ECMAScript, sin embargo, JavaScript (el nombre) ahora cuelga por ambas razones de denominación tradicionales, y como un término de mercadeo de Mozilla para sus diversas extensiones no estándar (que quieren poder realmente "versión" )
Varias versiones de JavaScript son implementaciones del estándar ECMAScript.
¿Qué es ECMAScript ie ES?
ECMAScript es un estándar para un lenguaje de scripting, y el lenguaje Javascript se basa en el estándar ECMAScript.
¿Es Javascript exactamente lo mismo que ECMAScript?
- No, Javascript no es exactamente equivalente a ECMAScript.
- Las características principales de Javascript se basan en el estándar ECMAScript, pero Javascript también tiene otras características adicionales que no están en las especificaciones / estándar de ECMA.
JavaScript = ECMAScript + DOM API;
API de DOM como: document.getElementById(''id'');
¿Otros idiomas usan el estándar ECMAScript?
- Sí, hay otros idiomas además de JavaScript que también implementan el estándar ECMAScript como su núcleo.
- ActionScript (usado por Adobe Flash) y JScript (usado por Microsoft) son lenguajes que implementan el estándar ECMAScript.
¿Por qué se llama ECMAScript?
- Javascript se creó originalmente en Netscape y querían estandarizar el idioma. Por lo tanto, enviaron el idioma a la asociación de fabricantes de ordenadores de Europa (ECMA) para su estandarización.
- Sin embargo, hubo problemas con la marca registrada con el nombre de Javascript, y el estándar se llamó ECMAScript, que es el nombre que tiene hoy también.
- Debido a problemas con las marcas registradas, la versión de Microsoft del lenguaje se llama JScript, aunque JScript es, en su esencia, el mismo idioma que Javascript.
< Actualización: > Para aquellos que se preocupan por la historia
- 1995: originalmente nombrado Mocha y cambiado a Livescript
- 1997: Se establece el estándar ECMAScript.
- 1999: ES3 sale y IE5 está de moda.
- 2000–2005: XMLHttpRequest, también conocido como AJAX, gana popularidad en aplicaciones como Outlook Web Access (2000) y Oddpost (2002), Gmail (2004) y Google Maps (2005).
- 2009: sale ES5 (esto es lo que la mayoría de nosotros usamos ahora) con forEach, Object.keys, Object.create (especialmente para Douglas Crockford) y JSON estándar
- 2015: sale ES6 / ECMAScript2015; En su mayoría contiene azúcar sintáctica, porque las personas no pudieron ponerse de acuerdo en algo más innovador (ES7).
ECMAScript = ES:
ECMAScript es un estándar para lenguajes de scripting.
Los lenguajes como Javascript están basados en el estándar ECMAScript.
El estándar ECMA se basa en varias tecnologías de origen, la más conocida es JavaScript (Netscape) y JScript (Microsoft).
ECMA significa Asociación Europea de Fabricantes de Computadoras
JavaScript = JS:
JavaScript es la implementación más popular del estándar ECMAScript.
Las características principales de Javascript se basan en el estándar ECMAScript, pero Javascript también tiene otras características adicionales que no están en las especificaciones / estándar de ECMA.
ActionScript y JScript son otros lenguajes que implementan el ECMAScript.
JavaScript fue enviado a ECMA para su estandarización, pero debido a problemas de marcas registradas con el nombre de Javascript, el estándar se llamó ECMAScript.
Cada navegador tiene un intérprete de JavaScript.
ES5 = ECMAScript 5:
ES5 es una versión de ECMAScript (antigua / actual).
ES5 es el JavaScript que usted conoce y usa en el navegador hoy.
ES5 no requiere un paso de compilación (transpilers) para transformarlo en algo que se ejecute en los navegadores de hoy.
La versión 5 de ECMAScript se terminó en diciembre de 2009, las últimas versiones de todos los principales navegadores (Chrome, Safari, Firefox e IE) han implementado la versión 5.
La versión 5.1 se terminó en junio de 2011.
ES6 = ECMAScript 6 = ES2015 = ECMAScript 2015:
ES2015 es una versión de ECMAScript (nueva / futura).
Oficialmente, debe utilizarse el nombre ES2015 en lugar de ES6.
ES6 abordará muchas de las deficiencias del lenguaje central abordadas en TypeScript y CoffeeScript.
ES6 es la siguiente iteración de JavaScript, pero no se ejecuta en los navegadores de hoy.
Hay bastantes transpilers que exportarán ES5 para ejecutarse en los navegadores.
BabelJS:
BabelJS es el transpiler más popular que transforma el nuevo JavaScript ES6 en el antiguo JavaScript ES5.
BabelJS hace posible escribir la próxima generación de JavaScript hoy (significa ES2015).
BabelJS simplemente toma el archivo ES2015 y lo transforma en un archivo ES5.
Las versiones actuales de los navegadores ahora pueden entender el nuevo código JavaScript (ES2015), incluso si aún no lo admiten.
TypeScript y CoffeeScript:
Ambos proporcionan azúcar sintáctica sobre ES5 y luego se compilan en JavaScript compatible con ES5.
Usted escribe TypeScript o CoffeeScript, luego el transpiler lo transforma en ES5 JavaScript.
ECMAScript es un estándar para JavaScrip t, mire estas declaraciones de MDN :
JavaScript
JavaScript (JS) es un lenguaje de programación ligero interpretado o compilado en JIT con funciones de primera clase. Si bien es más conocido como el lenguaje de scripting para páginas web, muchos entornos que no son de navegador también lo utilizan, como node.js, Apache CouchDB y Adobe Acrobat. JavaScript es un lenguaje dinámico basado en prototipos, multi paradigma y soporta estilos orientados a objetos, imperativos y declarativos (por ejemplo, programación funcional). Leer más sobre JavaScript.
ECMAScript
El estándar para JavaScript es ECMAScript . A partir de 2012, todos los navegadores modernos son totalmente compatibles con ECMAScript 5.1. Los navegadores más antiguos son compatibles con al menos ECMAScript 3. El 17 de junio de 2015, ECMA International publicó la sexta versión principal de ECMAScript, que oficialmente se llama ECMAScript 2015, y que inicialmente se llamó ECMAScript 6 o ES6. Desde entonces, los estándares de ECMAScript están en ciclos de publicación anuales. Esta documentación hace referencia a la última versión preliminar, que actualmente es ECMAScript 2018.
Para más información, visite here