Javascrip{filter}t heeft een heel vreemde naamgeschiedenis.
Het werd voor het eerst uitgebracht in 1995 als onderdeel van de Netscape Navigator, die de nieuwe taal de naam Livescrip{filtering}t gaf. Een jaar later, om mee te liften op de mediahype rond Java destijds, werd de naam tijdelijk veranderd in Javascrip{filtering}t (natuurlijk is de relatie tussen Java en Javascrip{filtering}t hetzelfde als die van Lei Feng en Lei Feng Toren - het heeft er niets mee te maken)
De grap met de scheve noot is helemaal niet grappig
Opmerking van de vertaler: de Wikipedia-pagina Javascrip{filter}t beschrijft deze geschiedenis in meer detail
In 1996 diende Netscape Javascrip{filtering}t in bij ECMA International (European Computer Manufacturers Association) voor standaardisatie, en uiteindelijk werd een nieuwe taalstandaard afgerond, namelijk ECMAscrip{filtering}t. Sindsdien is ECMAscrip{filtering}t de basis voor alle Javascrip{filtering}t-implementaties, hoewel om historische en marktmatige redenen (blijkbaar is ECMAscrip{filtering}t geen gewilde naam...... In werkelijkheid gebruiken we ECMAscrip{filter}t alleen om de standaard aan te roepen, en meestal gebruiken we Javascrip{filter}t om deze taal aan te roepen.
Terminologie:
- Standaard: Een set regels die definiëren wat het onderscheidt van andere dingen
- Implementatie: De specifieke implementatie/praktijk in de praktijk van een standaard
Echter, ontwikkelaars van Javascrip{filtering}t geven hier niet veel om, omdat ECMAscrip{filtering}t in de 15 jaar sinds de start nauwelijks is veranderd, en veel implementaties in de echte wereld al heel anders zijn dan de standaard. Na de release van de eerste versie van ECMAscrip{filtering}t werden er kort daarna nog twee versies uitgebracht, maar sinds de release van ECMAscrip{filter}t 3 in 1999 zijn er al tien jaar geen wijzigingen aan de officiële specificatie meer aangebracht. In plaats daarvan proberen browserleveranciers hun eigen talen uit te breiden, waardoor webontwikkelaars geen andere keuze hebben dan te experimenteren met en deze API's te ondersteunen. Zelfs na de release van ECMAscrip{filter}t 5 in 2009 duurde het enkele jaren voordat deze nieuwe specificaties brede steun kregen van browsers, maar de meeste ontwikkelaars schreven nog steeds ECMAscrip{filtering}t 3-stijl code en voelden niet de behoefte om erover te leren.
Opmerking van de vertaler: De versie van ECMAscrip{filter}t versie 4 werd verlaten omdat deze te agressief was, en Adobe's Actionscrip{filtering}t 3.0 is de enige implementatie van ECMAscrip{filtering}t edition 4 (Flash heeft het web bijna verenigd)
In 2012 begonnen de dingen plotseling te veranderen. Er is een push-to-end-ondersteuning voor oudere versies van IE, en het is haalbaarder om code te schrijven in de stijl van ECMAscrip{filter}t 5 (ES5). Tegelijkertijd wordt een nieuwe ECMAscrip{filtering}t-specificatie gelanceerd. Op dat moment raakten mensen gewend aan het beschrijven van verschillende Javascrip{filtering}t-implementaties in termen van versieondersteuning voor de ECMAscrip{filter}t-specificatie. Deze nieuwe standaard heette oorspronkelijk ES. Harmonie. In 2015 besloot TC39, de commissie die verantwoordelijk was voor de conceptspecificatie ECMAscrip{filter}t, het systeem voor het definiëren van nieuwe standaarden te veranderen naar één keer per jaar, wat betekent dat elke nieuwe functie kan worden toegevoegd zodra deze is goedgekeurd, in plaats van dat de vorige specificatie pas wordt afgerond nadat de volledige versie is afgerond en alle functies in orde zijn. Als gevolg hiervan werd ECMAscrip{filtering}t versie 6 hernoemd tot ECMAscrip{filtering}t 2015 (ES2015) voordat het in juni werd gepubliceerd.
Er worden nog steeds veel nieuwe Javascrip{filter}t-functies of syntaxis voorgesteld, waaronder decorators, async-await en statische klasse-eigenschappen. Ze worden vaak aangeduid als ES7, ES2016 of ES. Vervolgens, maar in feite kunnen ze alleen voorstellen of mogelijkheden genoemd worden, want de ES2016-specificatie is nog niet voltooid, en het is mogelijk dat ze allemaal worden geïntroduceerd, of geen enkele. TC39 verdeelt een voorstel in 4 fasen, en je kunt op de website van Babel zien in welke fase elk voorstel zich momenteel bevindt.
Dus, hoe gebruiken we deze verzameling terminologie? De volgende lijst kan u helpen:
- ECMAscrip{filter}t: Een taal gestandaardiseerd door ECMA International en onder toezicht van het TC39-comité. Vaak gebruikt om naar de standaard zelf te verwijzen.
- Javascrip{filtering}t: De meest voorkomende naam voor verschillende implementaties van de ECMAscrip{filtering}t-standaard. Deze term is niet beperkt tot een specifieke versie van de ECMAscrip{filtering}t-specificatie, en kan worden gebruikt voor elke mate van implementatie van elke versie van ECMAscrip{filtering}t.
- ECMAscrip{filtering}t 5 (ES5): De vijfde editie van ECMAscrip{filtering}t, gestandaardiseerd in 2009. Deze specificatie is redelijk volledig geïmplementeerd in alle moderne browsers.
- ECMAscrip{filter}t 6 (ES6) / ECMAscrip{filter}t 2015 (ES2015): De zesde editie van ECMAscrip{filtering}t werd herzien en gestandaardiseerd in 2015. Deze standaard is gedeeltelijk geïmplementeerd in de meeste moderne browsers. Je kunt deze compatibiliteitstabel raadplegen om te zien hoe verschillende browsers en tools zijn geïmplementeerd.
- ECMAscrip{filter}t 2016: De verwachte zevende editie van de ECMAscrip{filter}t-revisie, gepland voor release volgende zomer. De specifieke kenmerken die in deze specificatie zullen worden opgenomen, zijn nog niet afgerond
- ECMAscrip{filter}t Voorstellen: Voorstellen voor functies en syntaxis die worden overwogen voor opname in toekomstige versies van de ECMAscrip{filter}t-standaard zullen vijf fasen doorlopen: Stroman, Voorstel, Concept, Kandidaat en Voltooid.
Gedurende deze blog zal ik de huidige versie van ECMAscrip{filtering}t verwijzen als ES6 (omdat de meeste ontwikkelaars daar het meest aan gewend zijn), de specificatie van volgend jaar als ES2016 (omdat deze naam, in tegenstelling tot ES6/ES2015, gedurende het standaardisatieproces zal worden gebruikt), en toekomstige taalconcepten die nog niet zijn afgerond of opgesteld ECMAscrip{filtering}t voorstellen of Javascrip{filter}t voorstel. Ik zal mijn best doen om dit artikel te volgen bij elke gelegenheid die tot verwarring kan leiden.