Qual è la differenza tra JavaScript ed ECMAScript?


462

Qual è la differenza tra ECMAScript e JavaScript? Da quanto ho dedotto, ECMAScript è lo standard e JavaScript è l'implementazione. È corretto?

Risposte:


183

ECMAScript è il linguaggio, mentre JavaScript, JScript e persino ActionScript 3 sono chiamati "dialetti". Wikipedia fa luce su questo.


9
quello che sarebbe davvero bello è una chiara mappatura tra le versioni JavaScript ed ECMAScript, ad esempio ES5 corrisponde a JS1.5 ecc. ah l'ho trovato: en.wikipedia.org/wiki/JavaScript#Versions
Sam Joseph

2
@Sam - aggiornamento del link di Sam: en.wikipedia.org/wiki/JavaScript#Version_history
Rop

65
Diminuito e votato a favore di Yang Li, poiché questa risposta dice molto poco e sostanzialmente ti punta su Wikipedia. La risposta di Yang Li è molto più dettagliata e utile. Inoltre, se uno è la lingua / standard e l'altro il dialetto, o l'implementazione ecc. È aperto all'opinione, e non ai fatti, da quello che capisco. Mentre questa risposta fa sembrare che sia un fatto. Correggimi se sbaglio. In effetti, direi che il suggerimento di questa risposta non è nemmeno il consenso popolare. Come molti vedono ECMAScript ha lo standard e JavaScript come lingua.
Redfox05,


5
Non sono d'accordo. ECMAScript è la specifica. JS, JScript, ActionScript sono linguaggi che implementano tale specifica.
adripanico,

611

Penso che una piccola lezione di storia sia dovuta.

JavaScript è stato originariamente chiamato Mocha e modificato in Livescript ma alla fine è diventato JavaScript.

È importante notare che JavaScript è venuto prima di ECMAscript e la storia ti dirà perché.

Per iniziare dall'inizio, JavaScript ha derivato il suo nome da Java e inizialmente a Brendan Eich (il creatore di JS) è stato chiesto di sviluppare un linguaggio che somigliasse a Java per il web per Netscape.

Eich, tuttavia, decise che Java era troppo complicato con tutte le sue regole e così decise di creare un linguaggio più semplice in cui anche un principiante potesse codificare. Questo è evidente in cose come il rilassamento della necessità di avere un punto e virgola.

Dopo che il linguaggio è stato completato, il team di marketing di Netscape ha richiesto a Sun di consentire loro di nominarlo JavaScript come acrobazia di marketing e quindi perché la maggior parte delle persone che non hanno mai usato JavaScript pensano che sia correlato a Java.

Circa un anno o due dopo il rilascio di JavaScript nel browser, IE di Microsoft ha preso la lingua e ha iniziato a realizzare le proprie implementazioni come JScript. Allo stesso tempo, IE stava dominando il mercato e non molto tempo dopo che Netscape dovette chiudere il suo progetto.

Prima che Netscape fallisse, decisero di avviare uno standard che guidasse il percorso di JavaScript, chiamato ECMAScript.

ECMAScript ha avuto alcune versioni e nel 1999 hanno rilasciato la loro ultima versione (ECMAScript 3) prima di andare in letargo per i successivi 10 anni. Durante questi 10 anni, Microsoft ha dominato le scene, ma allo stesso tempo non stavano migliorando il loro prodotto e quindi è nato Firefox (guidato da Eich) e un mucchio di altri browser come Chrome, Opera.

ECMAScript ha pubblicato la sua 5a edizione nel 2009 (la 4a edizione è stata abbandonata) con funzionalità come la modalità rigorosa. Da allora, ECMAScript ha guadagnato molto slancio ed è programmato per rilasciare la sua sesta edizione tra qualche mese con i maggiori cambiamenti che ha avuto finora.

È possibile utilizzare un elenco di funzioni per ECMAScript 6 qui http://kangax.github.io/es5-compat-table/es6/ e anche il supporto del browser. Puoi persino iniziare a scrivere Ecmascript 6 come fai con CoffeeScript e utilizzare un compilatore per compilare fino a Ecmascript 5.

Se ECMAScript è la lingua e JavaScript è un dialetto è discutibile, ma non è importante. Se continui a pensare in questo modo, potresti confonderti. Non esiste un compilatore che esegua ECMAScript e credo che JavaScript sia considerato il linguaggio che implementa uno standard chiamato ECMAScript.

Esistono anche altri linguaggi evidenti che implementano ECMAScript come ActionScript (usato per Flash)


1
Per coloro che sono interessati a come compilare / traspilare il nuovo standard ES2015 fino al codice ECMAScript 5, si consiglia di controllare Babel (precedentemente 6to5) disponibile su babeljs.io o traceur su github.com/google/traceur-compiler . Con questi strumenti disponibili, non c'è motivo per cui non puoi iniziare subito a scrivere "nuovo JavaScript" e sfruttare tutte le ultime aggiunte alla lingua.
LWurm,

1
Non sapevo che Lua implementasse ECMAScript. Non riesco a trovare nulla che lo confermi. Qual è la tua fonte?
Battmanz

2
@YangLi Sei d'accordo con la risposta di jerone qui sotto, che i linguaggi ECMAScript non includono l'API DOM che usiamo tutti quando scriviamo JavaScript puro?
theJollySin

11
@theJollySin Sì, ha ragione. ECMAScript non è stato progettato specificamente per il browser, quindi metodi come document.getElementById e altre API DOM non fanno parte dello standard. Appartengono agli standard WHATWG, insieme ad altri metodi specifici del browser come localStorage ecc. Se prendi il nodo e non usi alcun modulo importato, allora hai l'API ECMAScript.
Yang Li,

1
In che modo più lingue possono implementare lo stesso standard e non essere la stessa lingua? Lo standard definisce la lingua. Se un linguaggio implementa lo standard C ++, si chiama C ++, non qualcos'altro (esattamente perché implementa quello standard). Quindi ho ancora la stessa domanda ... qual è la differenza?
Neme,

157

ECMAScript = ES:

  • ECMAScript è uno standard per i linguaggi di scripting.

  • Lingue come Javascript si basano sullo standard ECMAScript.

  • Lo standard ECMA si basa su diverse tecnologie di origine, la più nota delle quali è JavaScript (Netscape) e JScript (Microsoft).

  • ECMA significa Associazione europea dei produttori di computer

JavaScript = JS:

  • JavaScript è l'implementazione più popolare dello standard ECMAScript.

  • Le funzionalità principali di Javascript si basano sullo standard ECMAScript, ma Javascript ha anche altre funzionalità aggiuntive che non sono nelle specifiche / standard ECMA.

  • ActionScript e JScript sono altri linguaggi che implementano ECMAScript.

  • JavaScript è stato inviato all'ECMA per la standardizzazione ma a causa di problemi di marchio con il nome Javascript lo standard è stato chiamato ECMAScript.

  • Ogni browser ha un interprete JavaScript.

ES5 = ECMAScript 5:

  • ES5 è una versione di ECMAScript (vecchia / attuale).

  • ES5 è il JavaScript che conosci e utilizzi oggi nel browser.

  • ES5 non richiede un passaggio di costruzione (transpiler) per trasformarlo in qualcosa che verrà eseguito nei browser di oggi.

  • La versione 5 di ECMAScript è stata completata a dicembre 2009, le ultime versioni di tutti i principali browser (Chrome, Safari, Firefox e IE) hanno implementato la versione 5.

  • La versione 5.1 è stata completata nel giugno 2011.

ES6 = ECMAScript 6 = ES2015 = ECMAScript 2015:

  • ES2015 è una versione di ECMAScript (nuova / futura).

  • Ufficialmente il nome ES2015 dovrebbe essere usato al posto di ES6.

  • ES6 affronterà molte delle carenze del linguaggio principale affrontate in TypeScript e CoffeeScript.

  • ES6 è la prossima iterazione di JavaScript, ma non viene eseguita nei browser di oggi.

  • Esistono alcuni transpiler che esporteranno ES5 per l'esecuzione nei browser.

BabelJS:

  • BabelJS è il transpiler più popolare che trasforma il nuovo JavaScript ES6 in Old JavaScript ES5.

  • BabelJS rende possibile la scrittura della prossima generazione di JavaScript oggi (significa ES2015).

  • BabelJS prende semplicemente il file ES2015 e lo trasforma in file ES5.

  • Le versioni correnti dei browser ora possono comprendere il nuovo codice JavaScript (ES2015), anche se non lo supportano ancora.

TypeScript e CoffeeScript:

  • Entrambi forniscono zucchero sintattico in cima a ES5 e quindi vengono transcompilati in JavaScript conforme a ES5. 

  • Scrivi TypeScript o CoffeeScript, quindi il transpiler lo trasforma in JavaScript ES5.


3
" Javascript ha anche altre funzionalità aggiuntive che non sono nelle specifiche / standard ECMA " Potresti fornire alcuni esempi di tali funzionalità?
Aruna Herath,

1
" JavaScript è l'implementazione più popolare dello standard ECMAScript. " Allora dove posso trovare la fonte di questa implementazione chiamata "JavaScript"?
bzeaman,

7
Con la mia domanda sto cercando di evidenziare una potenziale scorrettezza nella formulazione della risposta. Viene utilizzata la parola "implementazione". Si dice che JavaScript sia "l' implementazione più popolare ". Un'implementazione è una " realizzazione di una specifica tecnica". Che si traduce in software . Quindi mi chiedo dove sia questo software chiamato 'JavaScript'.
bzeaman,

4
@Corrodias Concordo sul fatto che sembra un pignolo, ma penso che sia sensato fare quando la risposta riguarda la definizione delle cose. JavaScript è un linguaggio, oggi standardizzato da ECMAscript paragonabile a come C è un linguaggio standardizzato dagli standard ISO. Un termine per JavaScript sarebbe semplicemente "lingua", niente di più.
bzeaman,

4
I riepiloghi di ES5, ES2015 e BabelJS chiariscono davvero l'aria di molte confusioni che si potrebbero avere quando atterra nell'odierno mondo degli script JS dalla programmazione lato server. Bella risposta. +1
RBT

45

JavaScript = ECMAScript + DOM + BOM ;

  • La specifica del linguaggio ECMAScript® definisce tutta la logica per la creazione e la modifica di oggetti, array, numeri, ecc ...

  • DOM ( D DOCUMENTO O bject M odello) permette di comunicare con i documenti HTML / XML (ad esempio document.getElementById('id');).

  • BOM ( B rower O bject M odel) è la gerarchia degli oggetti del browser (ad es. Oggetto posizione, oggetto storia, elementi modulo).

Storia della denominazione JavaScript:

Moka ► LiveScript ► JavaScript ► (parte di JS risultante) ECMA-262 ► ECMAScript ► JavaScript (costituito da ECMAScript + DOM + BOM)


7
Quindi cosa c'è in node.js non è JavaScript? Perché non ha l'API DOM.
Aruna Herath,

4
È corretto. "Node.js è costruito contro le versioni moderne di V8." & "V8 implementa ECMAScript come specificato in ECMA-262, 5a edizione ..." & "Il DOM non è, tuttavia, in genere fornito dal motore JavaScript ma invece da un browser. Lo stesso vale per V8: Google Chrome fornisce il DOM." (Fonte: nodejs.org/en/docs/es6 & github.com/v8/v8/wiki/Introduction )
jerone,

7
@jerone Quale versione di ECMAScript sto usando quando scrivo codice JavaScript? Varia in base al browser o alla libreria?
theJollySin

4
Puoi darci un riferimento JavaScript = ECMAScript + DOM API;?
Koray Tugay,

2
@ koray-tugay Tranne qui, non c'è molta documentazione su cosa sia esattamente JavaScript. Immagino sia per questo che questa domanda è così popolare. La "formula" JavaScript = ECMAScript + DOM API;si basa solo sui termini documentati concordati nel complesso costituiti da JavaScript.
Jerone,

42

Tecnicamente ECMAScript è il linguaggio che tutti usano e implementano: è la specifica creata molti anni fa quando Netscape e Microsoft si sedettero e tentarono di standardizzare lo scripting tra JavaScript (linguaggio di scripting di Netscape) e JScript (Microsoft).

Successivamente tutti questi motori stanno implementando apparentemente ECMAScript, tuttavia JavaScript (il nome) ora rimane in giro sia per motivi di denominazione tradizionali, sia come termine di marketing di Mozilla per le loro varie estensioni non standard (che vogliono poter effettivamente "versione" )


12
Netscape e Microsoft sono davvero andati d'accordo una volta ?!
Cole Johnson,

2
Pensavo che Brandon volesse rendere JS uno standard prima di Microsoft, e l'unico che riuscì a trovare era l'ECMA.
Joe Simmons,

30

Che cos'è ECMAScript ovvero ES?

ECMAScript è uno standard per un linguaggio di scripting e il linguaggio Javascript si basa sullo standard ECMAScript.

Javascript è esattamente uguale a ECMAScript?

  • No, Javascript non è esattamente equivalente a ECMAScript.
  • Le funzionalità principali di Javascript si basano sullo standard ECMAScript, ma Javascript ha anche altre funzionalità aggiuntive che non sono nelle specifiche / standard ECMA.

JavaScript = ECMAScript + API DOM;

API DOM come: document.getElementById('id');

Altre lingue usano lo standard ECMAScript?

  • Sì, ci sono lingue diverse da JavaScript che implementano anche lo standard ECMAScript come core.
  • ActionScript (utilizzato da Adobe Flash) e JScript (utilizzato da Microsoft) sono entrambi linguaggi che implementano lo standard ECMAScript.

Perché si chiama ECMAScript?

  • Javascript è stato originariamente creato su Netscape e volevano standardizzare la lingua. Così, hanno presentato il linguaggio per la E uropea C omputer M del fabbricante A ssociazione (ECMA) per la standardizzazione.
  • Ma ci sono stati problemi di marchio con il nome Javascript e lo standard è stato chiamato ECMAScript, che è anche il nome che detiene oggi.
  • A causa di problemi di marchio, la versione di Microsoft del linguaggio si chiama JScript, anche se JScript è, in sostanza, la stessa lingua di Javascript.

Ci sono corsi su JS semplice ed ES6 JS. Quale dovremmo prendere? L'ES6 è più utilizzato nelle impostazioni professionali? Grazie.
MasterJoe2

16

Varie versioni di JavaScript sono implementazioni dello standard ECMAScript.


11

so che questo è un vecchio post, ma spero che questo possa aiutare qualcuno.

Negli anni '90, diverse versioni di js iniziarono a emergere come javascript da netscape, lo script Js di Microsoft. Quindi ecmascript è stato introdotto come standard. Ma ecmascript costituisce solo una parte di javascript che specifica la sua sintassi principale, tipi, oggetti ecc. Probabilmente ciò spiega le implementazioni incoerenti di javascript attraverso diff. i browser

Riferimento - Wrox (Javascript professionale per sviluppatori Web)


10

A mio avviso, ECMAScript è la "teoria" o "specifica" e Javascript è "pratiche" o "implementazione".


10

JavaScript è un linguaggio ECMAScript.

ECMAScript non è necessariamente JavaScript.


7

Le risposte esistenti parafrasano abbastanza bene il punto principale.

Il punto principale è che ECMAScript è il semplice linguaggio astratto, senza estensioni specifiche del dominio, è inutile in sé. La specifica definisce solo il linguaggio e gli oggetti principali di esso.

Mentre JavaScript, ActionScript e altri dialetti aggiungono la libreria specifica del dominio, in modo da poterlo usare per qualcosa di significativo.

Esistono molti motori ECMAScript , alcuni sono open source, altri sono proprietari. Puoi collegarli al tuo programma, quindi aggiungere le tue funzioni native all'oggetto globale in modo che il tuo programma diventi programmabile. Anche se il più delle volte vengono utilizzati nei browser.


5

Javascript era il nome originale, inteso a sfruttare la popolarità di Java. L'ECMA è l'ente normativo che sovrintende allo standard che alla fine è stato messo in atto, quindi i nomi sono approssimativamente equivalenti.

Le implementazioni hanno altri nomi, come V8 o Rhino, ecc.


3

ECMAScript è uno standard per JavaScrip t, guarda queste affermazioni da MDN :

inserisci qui la descrizione dell'immagine

JavaScript

JavaScript (JS) è un linguaggio di programmazione interpretato o compilato JIT leggero con funzioni di prima classe. Mentre è più noto come linguaggio di scripting per le pagine Web, molti ambienti non browser lo usano anche, come node.js, Apache CouchDB e Adobe Acrobat. JavaScript è un linguaggio dinamico basato su prototipi, multi-paradigma, che supporta stili orientati agli oggetti, imperativi e dichiarativi (ad es. Programmazione funzionale). Ulteriori informazioni su JavaScript.


ECMAScript

Lo standard per JavaScript è ECMAScript . A partire dal 2012, tutti i browser moderni supportano pienamente ECMAScript 5.1. I browser meno recenti supportano almeno ECMAScript 3. Il 17 giugno 2015, ECMA International ha pubblicato la sesta versione principale di ECMAScript, che è ufficialmente denominata ECMAScript 2015 e inizialmente è stata denominata ECMAScript 6 o ES6. Da allora, gli standard ECMAScript sono sui cicli di rilascio annuali. Questa documentazione fa riferimento all'ultima versione della bozza, che è attualmente ECMAScript 2018.

Per maggiori informazioni, visita qui


3

Ecco i miei risultati:

JavaScript: The Definitive Guide , scritto da David Flanagan fornisce una spiegazione molto concisa:

JavaScript è stato creato su Netscape nei primi giorni del Web e tecnicamente "JavaScript" è un marchio concesso in licenza da Sun Microsystems (ora Oracle) utilizzato per descrivere l'implementazione del linguaggio da parte di Netscape (ora Mozilla). Netscape ha presentato il linguaggio per la standardizzazione all'ECMA e, a causa di problemi con i marchi, la versione standardizzata del linguaggio è stata bloccata con il nome scomodo "ECMAScript". Per gli stessi motivi del marchio, la versione del linguaggio di Microsoft è formalmente conosciuta come "JScript". In pratica, quasi tutti chiamano la lingua JavaScript.

Un post sul blog di Microsoft sembra essere d'accordo con ciò che Flanagan spiega dicendo ..

ECMAScript è il nome ufficiale per il linguaggio JavaScript che tutti conosciamo e amiamo.

.. che mi fa pensare tutte le occorrenze di JavaScriptin questo messaggio di riferimento (da parte di Microsoft di nuovo) devono essere sostituiti con ECMASCript. In realtà sembrano stare attenti a usare ECMAScriptsolo in questo pagina di documentazione più recente e più tecnica.

w3schools.com sembra essere d'accordo con le definizioni sopra:

JavaScript è stato inventato da Brendan Eich nel 1995 e divenne uno standard ECMA nel 1997. ECMA-262 è il nome ufficiale dello standard. ECMAScript è il nome ufficiale della lingua.

La chiave qui è: il nome ufficiale della lingua .

Se controlli le pagine della versione JavaScript di Mozilla , incontrerai la seguente dichiarazione:

Deprecato. Il controllo esplicito delle versioni e l'attivazione delle funzionalità del linguaggio erano specifici di Mozilla e sono in fase di rimozione. Firefox 4 era l'ultima versione che faceva riferimento a una versione JavaScript (1.8.5). Con i nuovi standard ECMA, le funzionalità del linguaggio JavaScript sono ora spesso menzionate con la loro definizione iniziale nelle edizioni ECMA-262 come ECMAScript 2015.

e quando vedi le note di rilascio recenti, vedrai sempre riferimenti agli standard ECMAScript, come:

  • La proprietà Symbol2toStringTag ES2015 è stata implementata (bug 1114580).

  • Sono stati implementati i metodi TypedArray.prototype.toString () e TypedArray.prototype.toLocaleString () ES2015 (bug 1121938).

Mozilla Web Docs ha anche una pagina che spiega la differenza tra ECMAScript e JavaScript:

Tuttavia, il termine ombrello "JavaScript", inteso in un contesto di browser Web, contiene diversi elementi molto diversi. Uno di questi è il linguaggio principale (ECMAScript), un altro è la raccolta delle API Web, incluso il DOM (Document Object Model).

Conclusione

Per quanto ne so, le persone usano la parola JavaScript in qualche modo liberamente per fare riferimento alla specifica ECMAScript di base.

Direi che tutte le moderne implementazioni JavaScript (o motori JavaScript) sono in realtà implementazioni ECMAScript. Controlla la definizione del motore V8 da Google, ad esempio:

V8 è il motore JavaScript ad alte prestazioni open source di Google, scritto in C ++ e utilizzato in Google Chrome, il browser open source di Google e in Node.js, tra gli altri. Implementa ECMAScript come specificato nell'ECMA-262.

Sembrano usare la parola JavaScript ed ECMAScript in modo intercambiabile, e direi che in realtà è un motore ECMAScript?

Quindi la maggior parte dei motori JavaScript sta implementando lo standard ECMAScript, ma invece di chiamarli motori ECMAScript, si definiscono motori JavaScript. Questa risposta supporta anche il modo in cui vedo la situazione.


2

Dubito che avremmo mai usato la parola "ECMAScript" se non per il fatto che il nome "JavaScript" è di proprietà di Sun. A tutti gli effetti, la lingua è JavaScript. Non vai in libreria alla ricerca di libri ECMAScript, vero?

È un po 'troppo semplice dire che "JavaScript" è l'implementazione. JScript è l'implementazione di Microsoft.


1
Non ho problemi con la parola ECMAscript ... hai mai pensato che fosse strano dire MPEG, invece del video?
ryansstack,

7
Haha. Non è stato Brendan Eich a dire che ECMAScript sembrava una malattia della pelle? :-)
Nosredna,

7
Sun possiede la parola Java, non JavaScript.
James R. Clayton,

1
@ JamesR.Clayton JavaScript è stato creato in Netscape nei primi giorni del Web e tecnicamente "JavaScript" è un marchio commerciale concesso in licenza da Sun Microsystems (ora Oracle) utilizzato per descrivere l'implementazione del linguaggio di Netscape (ora Mozilla).
Koray Tugay,

1

JavaScript è una branca delle lingue formata attorno allo standard ECMAScript. Credo che l'ECMA sia l'Associazione europea dei produttori di computer, non che questo sia veramente rilevante o altro.

Non dimenticare che un altro linguaggio popolare formato attorno allo standard ECMA Script è ActionScript, utilizzato in Adobe Flash / Flex.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.