ECMAScript: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→Undicesima Edizione - ECMAScript 2020: Punteggiatura Etichette: Modifica da mobile Modifica da web per mobile Modifica da mobile avanzata |
m corretto rilasciato |
||
(7 versioni intermedie di 4 utenti non mostrate) | |||
Riga 1:
{{Linguaggio di programmazione
|autore =
|data =
|utilizzo =
|paradigmi =
|tipizzazione =
}}
'''ECMAScript''' (o '''ES''') è la [[specifica tecnica]] di un [[linguaggio di scripting]], standardizzata e mantenuta da [[ECMA International]] nell''''ECMA-262''' ed ISO/IEC 16262. Le implementazioni più conosciute di questo linguaggio (spesso definite come dialetti) sono [[JavaScript]], [[JScript]] e [[ActionScript]] che sono entrati largamente in uso, inizialmente, come linguaggi [[lato client]] nello [[programmazione web|sviluppo web]].
Line 4 ⟶ 11:
Le specifiche definite da ECMAScript sono delle specifiche standardizzate di un linguaggio sviluppato da [[Brendan Eich]] di [[Netscape]]. Inizialmente era chiamato "Mocha", più tardi LiveScript e solo in ultimo JavaScript.<ref>{{Cita web|cognome= Krill|nome= Paul|url= http://www.infoworld.com/article/2653798/application-development/javascript-creator-ponders-past--future.html|titolo= JavaScript creator ponders past, future | Developer World|editore= InfoWorld|data= 23 giugno 2008|accesso= 31 ottobre 2013}}</ref> Nel dicembre del 1995, la [[Sun Microsystems]] insieme a Netscape annunciarono JavaScript attraverso un comunicato stampa.<ref>{{Cita web|url= http://wp.netscape.com/newsref/pr/newsrelease67.html|urlarchivio= https://web.archive.org/web/20070916144913/http://wp.netscape.com/newsref/pr/newsrelease67.html|dataarchivio= 16 settembre 2007|titolo= Press Release|editore= Web.archive.org|data= |accesso= 31 ottobre 2013|urlmorto= sì}}</ref> Nel marzo del 1996, [[Netscape Navigator|Netscape Navigator 2.0]] veniva distribuito diventando il primo browser a supportare JavaScript.
Grazie all'enorme successo di JavaScript come linguaggio client-side, [[Microsoft]] sviluppò una versione differente ma compatibile del linguaggio chiamandolo [[JScript]] per evitare problemi di copyright. JScript implementava nuovi metodi per il calcolo della data per risolvere in parte i problemi dovuti all'anno 2000 che affliggevano JavaScript in quanto la classe Date era basata sull'omonima classe di Java.<ref>{{Cita web|url= http://weblogs.mozillazine.org/roadmap/archives/2008/04/popularity.html|urlarchivio= https://web.archive.org/web/20080517011912/http://weblogs.mozillazine.org/roadmap/archives/2008/04/popularity.html|dataarchivio= 17 maggio 2008|titolo= Brendan's Roadmap Updates: Popularity<!-- Bot generated title -->|sito= weblogs.mozillazine.org|urlmorto= sì}}</ref> JScript fu incluso quindi in [[Internet Explorer 3|Internet Explorer 3.0]],
Netscape consegnò JavaScript ad [[ECMA International]] per il lavoro di standardizzazione e per fissare le specifiche. Così iniziò ECMA-262 nel novembre del 1996.<ref>{{Cita web|url= http://cgi.netscape.com/newsref/pr/newsrelease289.html|urlarchivio= https://web.archive.org/web/19981203070212/http://cgi.netscape.com/newsref/pr/newsrelease289.html|dataarchivio= 3 dicembre 1998|titolo= Press Release|editore= Web.archive.org|data= |accesso= 31 ottobre 2013|urlmorto= sì}}</ref> Questa prima edizione fu adottata dall'Ecma General Assembly nel giugno del 1997 e diverse edizioni della standardizzazione sono state pubblicate da allora. Il nome "ECMAScript" fu un compromesso tra le organizzazioni coinvolte nella standardizzazione del linguaggio, specialmente Netscape e Microsoft le cui dispute dominavano la scena durante i primi tempi in cui questi standard nascevano. Eich difatti commentò che "ECMAScript è sempre stato un nome contrattato ma mai voluto che suonava molto come una malattia della pelle."<ref>{{Cita web|url= https://mail.mozilla.org/pipermail/es4-discuss/2006-October/000133.html|titolo= Will there be a suggested file suffix for es4?|editore= Mail.mozilla.org|data= 3 ottobre 2006|accesso= 31 ottobre 2013|dataarchivio= 21 giugno 2020|urlarchivio= https://web.archive.org/web/20200621202321/https://mail.mozilla.org/pipermail/es-discuss/2006-October/000133.html|urlmorto= sì}}</ref>
Mentre sia JavaScript che JScript mirano ad essere compatibili con le specifiche ECMAScript, provvedono a fornire allo stesso tempo funzioni aggiuntive non descritte dallo standard ECMA.<ref>{{Cita web|url= http://javascript.about.com/od/reference/a/jscript.htm|titolo= JScript VS JavaScript|editore= About.com|data= 25 novembre 2015|accesso= 1 marzo 2016|dataarchivio= 26 novembre 2015|urlarchivio= https://web.archive.org/web/20151126040655/http://javascript.about.com/od/reference/a/jscript.htm|urlmorto= sì}}</ref>
=== Versioni ===
Sono state pubblicate finora
{| class="wikitable"
!Edizione
Line 99 ⟶ 106:
| vedi [[#dodicesima edizione|Dodicesima edizione - ECMAScript 2021]]
| Jordan Harband, Shu-yu Guo, Michael Ficarra, Kevin Gibbons
|-
|13
|Giugno 2022
|
|Shu-yu Guo, Michael Ficarra, Kevin Gibbons
|-
|14
|Giugno 2023
|ECMAScript 2023 (ES2023)
|
|Shu-yu Guo, Michael Ficarra, Kevin Gibbons
|-
|15
|Giugno 2024
|ECMAScript 2024 (ES2024)
|
|Shu-yu Guo, Michael Ficarra, Kevin Gibbons
|-
|16
|(in attesa)
|ECMAScript 2025 (ES2025)
|(in attesa)
|(in attesa)
|}
Nel giugno 2004, ECMA International pubblicò lo standard ECMA-357, definendo un'estensione di ECMAScript, conosciuta come [[ECMAScript per XML]] (E4X). Ecma definì anche un "Compact Profile" per ECMAScript (conosciuto come ES-CP o ECMA 327) ideato per dispositivi dalle risorse limitate, che venne ritirato nel 2015.<ref name="ES-CP-withdrawn">[https://esdiscuss.org/notes/2015-03-24 2015-03-24 Meeting Notes]. ESDiscuss. Also see [https://www.ecma-international.org/publications/standards/Standardwithdrawn.htm Ecma withdrawn Standards]. ECMA.</ref>
=== Quarta Edizione (abbandonata) ===
La quarta edizione proposta di ECMA-262 (ECMAScript 4 o ES4) sarebbe stata la prima major update di ECMAScript dalla terza edizione pubblicata nel 1999. L'uscita delle specifiche (insieme alle referenze per l'implementazione) era inizialmente prevista per ottobre 2009 ed infatti un'introduzione al linguaggio fu
Ad agosto 2008, fu presa la decisione di ridimensionare la quarta edizione di ECMAScript e accorparla al progetto ECMAScript Harmony. Le novità in discussione per Harmony erano:
Line 112 ⟶ 143:
* [[assegnamento destrutturato]]
* [[Tipo di dato|tipi di dati]] algebrici
L'intento di queste caratteristiche era in parte quello di facilitare lo sviluppo di software complessi con grandi gruppi di lavoro alle spalle e di permettere di eliminare alcune caratteristiche dinamiche del linguaggio per migliorare le prestazioni. Per esempio, Tamarin (la macchina virtuale per [[ActionScript]] sviluppata e
Oltre all'introduzione di nuove features, nella quarta edizione fu proposto di correggere diversi bug dell'edizione precedente<ref>{{Cita web|autore= John Resig|url= http://ejohn.org/blog/bug-fixes-in-javascript-2/|titolo= John Resig – Bug Fixes in JavaScript 2|editore= Ejohn.org|data=|accesso= 31 ottobre 2013}}</ref><ref>{{Cita web|url= http://www.ecmascript.org/es4/spec/incompatibilities.pdf|titolo= Compatibility Between ES3 and Proposed ES4|editore= Ecmascript.org|accesso= 31 ottobre 2013|urlmorto= sì|urlarchivio= https://web.archive.org/web/20140724055116/http://www.ecmascript.org/es4/spec/incompatibilities.pdf|dataarchivio= 24 luglio 2014}}</ref>. Queste correzioni trovarono quindi posto nella quinta edizione
Line 137 ⟶ 168:
=== Settima Edizione - ECMAScript 2016 ===
La settima edizione, ufficialmente ECMAScript 2016, fu
<ref name="ES2016"/><ref>{{Cita web|url=https://webkit.org/blog/6240/ecmascript-6-proper-tail-calls-in-webkit/|titolo=ECMAScript 6 Proper Tail Calls in WebKit|cognome=Saboff|nome=Michael|data=23 maggio 2016|sito=WebKit|accesso=11 aprile 2019}}</ref>
{{anchor|ottava edizione}}
Line 151 ⟶ 182:
=== Decima Edizione - ECMAScript 2019 ===
La decima edizione, chiamata ECMAScript 2019 è stata
ECMAScript® 2019 Language Specification|sito=ecma-international.org |url=https://262.ecma-international.org/10.0/|accesso=4 giugno 2022}}</ref>. Le maggiori novità riguardano i metodi <code>Array.flatMap()</code><ref>[https://2ality.com/2017/04/flatmap.html Functional pattern: flatMap]</ref> e <code>Object.fromEntries()</code><ref>[https://2ality.com/2019/01/object-from-entries.html ES proposal: `Object.fromEntries()`]</ref><ref>[http://www.ecma-international.org/ecma-262/10.0/index.html ECMAScript® 2019 Language Specification]</ref>.
{{anchor|undicesima edizione}}
Line 193 ⟶ 224:
! colspan="4" | Conformità
|-
! ES5<ref name="kangax5">{{Cita web|url=https://kangax.github.io/compat-table/es5|titolo=ECMAScript 5 compatibility table|sito=kangax.github.io|lingua=en|accesso=8 novembre 2018|dataarchivio=19 novembre 2018|urlarchivio=https://web.archive.org/web/20181119145151/http://kangax.github.io/compat-table/es5/|urlmorto=sì}}</ref>
! ES6<ref name="kangax6">{{Cita web|url=https://kangax.github.io/compat-table/es6|titolo=ECMAScript 6 compatibility table|sito=kangax.github.io|lingua=en|accesso=8 novembre 2018|dataarchivio=17 novembre 2018|urlarchivio=https://web.archive.org/web/20181117194027/http://kangax.github.io/compat-table/es6/|urlmorto=sì}}</ref>
! 2016+<ref name="kangax2016plus">{{Cita web|url=https://kangax.github.io/compat-table/es2016plus|titolo=ECMAScript 2016+ compatibility table|sito=kangax.github.io|lingua=en|accesso=8 novembre 2018|dataarchivio=24 novembre 2018|urlarchivio=https://web.archive.org/web/20181124112954/http://kangax.github.io/compat-table/es2016plus/|urlmorto=sì}}</ref><ref name="punteggio">Punteggio che racchiude tutti i test di conformità dalla ES2016 alla ES2019</ref>
|-
| [[V8 (motore JavaScript)|V8]]
Line 233 ⟶ 264:
<references/>
==Voci
* [[ActionScript]]
* [[Dart (programming language)|Dart (linguaggio di programmazione)]]▼
▲* [[Document Object Model]] (DOM)
▲* [[ECMAScript for XML]] (E4X)
* [[JavaScript]]
* [[JScript]]
▲* ([[QML (linguaggio di programmazione)|QML]]
* [[TypeScript]]
== Collegamenti esterni ==
* {{FOLDOC}}
* {{cita web|1=http://www.ecmascript.org/|2=Sito ufficiale - ECMAScript|lingua=en|accesso=1º marzo 2016|urlarchivio=http://arquivo.pt/wayback/20160518084505/http://www.ecmascript.org/|dataarchivio=18 maggio 2016|urlmorto=sì}}
|