Javascrip{filter}t ha una storia di denominazione molto strana.
È stato rilasciato per la prima volta nel 1995 come parte del Netscape Navigator, che ha dato al nuovo linguaggio il nome Livescrip{filtering}t. Un anno dopo, per catturare il clamore mediatico su Java dell'epoca, il nome fu temporaneamente cambiato in Javascrip{filtering}t (ovviamente, la relazione tra Java e Javascrip{filtering}t è la stessa di quella di Lei Feng e Lei Feng Tower - non c'entra nulla)
La battuta sulla nocciola storta non è affatto divertente
Nota del traduttore: La voce Javascrip{filter}t di Wikipedia descrive questa storia in modo più dettagliato
Nel 1996, Netscape presentò Javascrip{filtering}t a ECMA International (European Computer Manufacturers Association) per la standardizzazione, e infine finalizzò un nuovo standard linguistico, che fu ECMAscrip{filtering}t. Da allora, ECMAscrip{filtering}t è stata la base per tutte le implementazioni di Javascrip{filtering}t, anche se per ragioni storiche e di mercato (a quanto pare ECMAscrip{filtering}t non è un nome che piace...... In realtà, usiamo solo ECMAscrip{filter}t per chiamare lo standard, e di solito usiamo Javascrip{filter}t per chiamare questo linguaggio.
Terminologia:
- Standard: Un insieme di regole che definiscono cosa lo distingue da altre cose
- Implementazione: L'implementazione specifica/pratica reale di uno standard
Tuttavia, agli sviluppatori di Javascrip{filtering}t non interessa molto a questo, perché ECMAscrip{filtering} non è cambiato molto nei 15 anni dalla sua nascita, e molte implementazioni reali sono già molto diverse dallo standard. Infatti, dopo il rilascio della prima versione di ECMAscrip{filtering}t, furono rilasciate altre due versioni poco dopo, ma dal rilascio di ECMAscrip{filter}t 3 nel 1999, nessuna modifica è stata aggiunta con successo alla specifica ufficiale per dieci anni. Invece, i produttori di browser si affrettano a espandere i propri linguaggi, lasciando agli sviluppatori web solo dover sperimentare e supportare queste API. Anche dopo il rilascio di ECMAscrip{filter}t 5 nel 2009, ci vollero diversi anni perché queste nuove specifiche ottenessero un ampio supporto dai browser, ma la maggior parte degli sviluppatori scriveva ancora codice in stile ECMAscrip{filtering}t 3 e non sentiva il bisogno di impararle.
Nota del traduttore: La bozza di ECMAscrip{filter}t versione 4 è stata abbandonata perché troppo aggressiva, e Actionscrip{filtering}t 3.0 di Adobe è l'unica implementazione di ECMAscrip{filtering}t edizione 4 (Flash ha quasi unificato il web)
Nel 2012, le cose hanno improvvisamente iniziato a cambiare. Esiste un supporto push to end per le versioni più vecchie di IE, ed è più fattibile scrivere codice nello stile di ECMAscrip{filter}t 5 (ES5). Contemporaneamente, viene lanciata una nuova specifica ECMAscrip{filtering}t. A questo punto, le persone hanno iniziato ad abituarsi a descrivere varie implementazioni di Javascrip{filtering}t in termini di supporto alle versioni della specifica ECMAscrip{filter}t. Questo nuovo standard era originariamente chiamato ES. Armonia. Nel 2015, TC39, il comitato responsabile dello sviluppo della bozza della specifica ECMAscrip{filter}t, ha deciso di modificare il sistema per definire nuovi standard a una volta all'anno, il che significa che ogni nuova caratteristica può essere aggiunta una volta approvata, mentre la specifica precedente viene finalizzata solo dopo che l'intera bozza è stata completata e tutte le funzionalità sono a posto. Di conseguenza, ECMAscrip{filtering}t versione 6 è stata rinominata ECMAscrip{filtering}t 2015 (ES2015) prima della pubblicazione a giugno.
Sono ancora in fase di proposta molte nuove funzionalità o sintassi di Javascrip{filter}t, inclusi decoratori, async-await e proprietà di classe statica. Sono spesso chiamati ES7, ES2016 o ES. Poi, ma in realtà possono essere chiamate solo proposte o possibilità, dopotutto, la specifica ES2016 non è ancora completa, ed è possibile che vengano introdotte tutte, o nessuna. TC39 divide una proposta in 4 fasi, e puoi verificare in quale fase si trova ciascuna proposta sul sito web di Babel.
Quindi, come usiamo questa serie di terminologia? La seguente lista potrebbe aiutarti:
- ECMAscrip{filter}t: Un linguaggio standardizzato da ECMA International e supervisionato dal comitato TC39. Spesso usato per riferirsi allo standard stesso.
- Javascrip{filtering}t: Il nome più comune per varie implementazioni dello standard ECMAscrip{filtering}t. Questo termine non è limitato a una versione specifica della specifica ECMAscrip{filtering}t, e può essere utilizzato per qualsiasi grado variabile di implementazione di qualsiasi versione di ECMAscrip{filtering}t.
- ECMAscrip{filtering}t 5 (ES5): La quinta edizione di ECMAscrip{filtering}t, standardizzata nel 2009. Questa specifica è abbastanza completa implementata in tutti i browser moderni.
- ECMAscrip{filter}t 6 (ES6) / ECMAscrip{filter}t 2015 (ES2015): La sesta edizione di ECMAscrip{filtering}t è stata rivista e standardizzata nel 2015. Questo standard è parzialmente implementato nella maggior parte dei browser moderni. Puoi consultare questa tabella di compatibilità per vedere come sono implementati i diversi browser e strumenti.
- ECMAscrip{filter}t 2016: La prevista settima edizione della revisione ECMAscrip{filter}t, prevista per il rilascio la prossima estate. Le caratteristiche specifiche che saranno incluse in questa specifica non sono ancora state definite
- Proposte ECMAscrip{filter}t: Le proposte di funzionalità e sintassi che saranno considerate per l'inclusione nelle future versioni dello standard ECMAscrip{filter}t attraverseranno cinque fasi: Uomo di Paglia, Proposta, Bozza, Candidato e Completato.
In tutto questo blog, mi riferirò alla versione attuale di ECMAscrip{filtering}t come ES6 (perché è a questo che la maggior parte degli sviluppatori è più abituata), alla specifica del prossimo anno come ES2016 (perché, a differenza di ES6/ES2015, questo nome sarà usato durante tutto il processo di standardizzazione), e ai futuri concetti di linguaggio che non sono ancora stati finalizzati o redatti da proposte ECMAscrip{filtering}t o Javascrip{filter}t proposal. Farò del mio meglio per seguire questo articolo in ogni occasione che possa causare confusione.