JavaScript, ES6, ES7, ES10 var är vi?
On januari 26, 2022 by adminES6 och ES7 – påminnelse
Jag tänker inte förolämpa dig och skriva ännu en ES6-introduktion… Men jag ska faktiskt göra det. I ett nötskal är ES6 (eller ES2015) det parti av funktioner som klarade Stage 4 enligt 2015 års milstolpe. Med andra ord, om du har en god förståelse för ES6 och viss kunskap om ES7 har du ungefär 4 år att komma ikapp… Ingen press.
Låt oss ta en titt på vad som officiellt ingår i ES6. Förresten har alla dessa funktioner officiellt stöd i alla webbläsare. Med andra ord behöver du inte Babel för att använda någon av dem (om du inte stöder IE 11, som saknar några av dem).
I ES6 har vi:
Möjligheten att skapa och ärva klasser.
class MyComponent extends React.Components {}
ES6-moduler med import och export.
import * from 'React';export default MyComponent;
Generatorer
let fibonacci = {
*() {
let pre = 0, cur = 1
for (;;) {
=
yield cur
}
}
}
Har du märkt det? Decorators, Object destructuring (som React props: {…props}) och så vidare är inte en del av ES6!
Om ES7 (ES2016) här är vad vi har. Det är en ganska liten uppdatering:
- Exponentieringsoperatorn
base ** exponent
- Array innehåller
array.includes(myItem) // true or false
Källa: http://ecma-international.org/ecma-262/7.0/
Som du säkert har märkt är Async/Await inte en del av ES7, utan ES8!
ES8, ES9, ES10
Alla som har haft en intervju med JavaScript-relaterade frågor under de senaste två åren har fått frågan minst 1671 gånger om vad ES6 är och vilka funktioner det medför. Men har någon lagt märke till att JS uppenbarligen inte plötsligt stannade vid ES6 eller ES7, men ändå är det ingen som frågar dig om det? Här är din möjlighet att rätta till saker och ting!
I ES8 (ES2017), här är de tillgängliga funktionerna:
Och naturligtvis, Async / Await-funktioner:
Om du har följt artikeln, borde du ha förstått vid det här laget: Med bara några få undantag, eftersom dessa funktioner är Stage 4, kan du använda dem i webbläsaren utan Babel (med det sagt, ES8 är ES2017, det är fortfarande ganska nytt och vissa implementationer som Edge och Operas ursprungliga motor släpar efter lite).
Slutligt går vi vidare till ES10 (eller ES2019)!
const array = ;array.sort(...)/*
*/
- Gör JavaScript till en överordnad uppsättning av JSON (se detaljer här)
Hur blir det med ES5?
Om ES6 är ES2015 och ES7 är ES2016, kan du då gissa vad ES5:s årsmodell är?
…Du förlorade! (Såvida du inte vet, men eftersom jag inte kan höra dig antar jag att du har förlorat). ES5 är ES2009!
Det slutar inte här, innan ES5 var den senaste ES-uppdateringen 1999!
Som du kan se var uppdateringarna ganska frekventa från 97 till 99, sedan skulle ES5 bli den enda uppdateringen på 16 år!
Hur förklarar vi det? Enligt min åsikt finns det två faktorer till detta. Den första är teknisk: JavaScript suger. Ärligt talat, det gör det. På den tiden hade vi några alternativ till JS: Java Applets, ActiveX och till och med Flash.
Upp till 2011-ish (när Chrome började bli en kula) var inte bara dessa tekniker en storleksordning snabbare än JS, utan de hade också redan de flesta av de funktioner som vi fortfarande kämpar för att få in i JS nuförtiden. (Java har alla språkfunktioner som klasser och dekoratorer, stöd för multi-threading, OpenGL, Sockets, etc…). När Chrome och Google kom in på scenen och 2013 meddelade att Java var ute (och sedan följde Flash) var korståget för att få JS att komma ikapp sina konkurrenter igång. Två år senare stod ES6 inför dörren.
Den andra faktorn är ekonomisk: 2000 är året då Dot-com-bubblan sprack. För de yngsta av er, föreställ er vad bitcoin har varit för några år sedan, Internetstartups var samma sak i slutet av 90-talet. Nystartade företag lade till .com i slutet av sina namn för att få enorma riskinvesteringar (precis som vi har ett löfte om mySuperStartup.ai nuförtiden) tills värdet plötsligt sjönk på 20-talet. Detta är en mycket rudimentär förklaring, och jag uppmanar dig att ta en titt på wikipedia-artikeln för en bättre förklaring.
Punkten är att Internet slutade få den dragkraft det behövde för att göra JS och webbrelaterad teknik till ett fokus. Senare, med uppkomsten av Amazon, Facebook och Google, fick webben ett nytt skäl att vara, och ett nytt skäl att blomstra. Det gjorde det logiskt att vi tog upp JS igen! Google offentliggjordes 2004, Chrome släpptes 2008 och blev den mest populära webbläsaren 2014: ett år innan ES6 kom.
Vad saknas? (Avvisade förslag)
Object.observe
Detta är förmodligen det största avvisandet av alla. Det tillät ursprungligen JS att observera alla värden i koden :
var obj = {
foo: 0,
bar: 1
};
Object.observe(obj, function(changes) {
console.log(changes);
});obj.baz = 2;
//
Det här var en fantastisk funktion, och självklart kan du göra det från din kod (eller med en polyfill), men att implementera det i webbläsaren var ett löfte om en snabbare reaktiv kod (t.ex. Angular använder sig av en hel del observationer). Den drogs tillbaka eftersom de inte kunde komma fram till ett genomförande med konstant prestanda. Mer detaljer här.
Cancelable Promises
Självförklarande, en funktion som jag är säker på inte är den enda som saknas. Tanken är att låta utvecklare avbryta utförandet av ett löfte när som helst.
Användningsfallen varierar, till exempel för att ha timeout på klientsidan vid asynkrona operationer, eller till exempel om du har ett navigeringssystem med flikar och användaren klickar på en flik innan du har hunnit ladda innehållet i den aktuella fliken.
blöcks
Jag nämner bara detta för att jag gillar namnet, men också för att det är en trevlig funktion som är jämförbar med Go Routines eller C# Tasks.
const blöck = await {|
// This code is Async, but most importantly, executed in another thread
|};
Ovriga
För övrigt har några andra intressanta förslag lagts fram, till exempel anropsbara konstruktörer. De flesta av dessa har antingen dragits tillbaka eftersom den ursprungliga författaren har gjort det, eller förkastats eftersom de står i konflikt med eller överlappar befintliga/planerade funktioner.
Lämna ett svar