JavaScript, ES6, ES7, ES10 unde suntem?
On ianuarie 26, 2022 by adminES6 și ES7 – reminder
Nu am de gând să vă insult și să scriu încă o introducere despre ES6…Dar, de fapt, am de gând să o fac. Pe scurt, ES6 (sau ES2015) este lotul de caracteristici care a trecut de etapa 4 conform jalonului 2015. Cu alte cuvinte, dacă aveți o bună înțelegere a ES6 și ceva cunoștințe despre ES7, aveți aproximativ 4 ani de recuperat…Fără presiune.
Să aruncăm o privire la ceea ce face parte oficial din ES6. Apropo, toate aceste caracteristici sunt suportate oficial în toate browserele. Cu alte cuvinte, nu aveți nevoie de Babel pentru a folosi niciuna dintre ele (cu excepția cazului în care suportați IE 11, căruia îi lipsesc câteva).
În ES6 avem:
Capacitatea de a crea și moșteni clase.
class MyComponent extends React.Components {}
Module ES6 cu import și export.
import * from 'React';export default MyComponent;
Generatori
let fibonacci = {
*() {
let pre = 0, cur = 1
for (;;) {
=
yield cur
}
}
}
Ați observat? Decoratorii, destructurarea obiectelor (precum React props: {…props}) și așa mai departe nu fac parte din ES6!
Despre ES7 (ES2016) iată ce avem. Este o actualizare destul de mică:
- Operatorul de exponențiere
base ** exponent
- Array include
array.includes(myItem) // true or false
Sursa: http://ecma-international.org/ecma-262/7.0/
După cum probabil ați observat, nu, Async/Await nu face parte din ES7, ci din ES8!
ES8, ES9, ES10
Toată lumea care a avut un interviu legat de JavaScript în ultimii 2 ani, a fost întrebată de cel puțin 1671 de ori ce este ES6 și ce caracteristici aduce. Dar a observat cineva cum JS, evident, nu s-a oprit brusc la ES6 și nici la ES7, și totuși, nimeni nu vă întreabă despre asta? Iată ocazia ta de a îndrepta lucrurile!
În ES8 (ES2017), iată care sunt caracteristicile disponibile:
Și, bineînțeles, funcțiile Async / Await:
Dacă ai urmărit articolul, până acum ar trebui să înțelegi: Cu mici excepții, aceste funcții fiind în stadiul 4, le puteți folosi în browser fără Babel (acestea fiind spuse, ES8 fiind ES2017, este încă destul de recent și unele implementări, cum ar fi Edge și motorul nativ de la Opera, sunt puțin în urmă).

Mai departe, trecem la ES9. La fel ca ES8 și ES6, ES9 (sau ES2018) este o actualizare destul de importantă:

În cele din urmă, trecem la ES10 (sau ES2019)!
const array = ;array.sort(...)/*
*/
- Fă din JavaScript un superset de JSON (vezi detalii aici)
Cum rămâne cu ES5?
Dacă ES6 este ES2015, iar ES7 este ES2016, poți ghici care este anul ES5?
…Ai pierdut! (Doar dacă nu cumva chiar știi, dar din moment ce nu te pot auzi, presupun că ai pierdut). ES5 este ES2009!
Nu se oprește aici, înainte de ES5, ultima actualizare a ES a fost în 1999!

Cum vedeți, din 97 până în 99, actualizările au fost destul de frecvente, apoi ES5 avea să fie singura actualizare în 16 ani!

Cum ne explicăm asta? Ei bine, în opinia mea, există doi factori care explică acest lucru. Primul este de natură tehnică: JavaScript este nașpa. Sincer, chiar așa este. Pe atunci, aveam câteva alternative la JS: Java Applets, ActiveX și chiar Flash.
Până prin 2011-ish (când Chrome a început să fie un glonț) nu numai că aceste tehnologii erau cu un ordin de mărime mai rapide decât JS, dar aveau deja majoritatea funcțiilor pe care încă ne luptăm să le obținem în JS în zilele noastre. (Java are toate caracteristicile limbajului, cum ar fi clasele și decoratorii, suportă multi-threading, OpenGL, Sockets, etc…). Când Chrome și Google au intrat în scenă și au anunțat în 2013 că Java a fost eliminat (și apoi a urmat Flash), a început cruciada pentru a face JS să ajungă din urmă concurenții săi. Doi ani mai târziu, aveam ES6 la ușă.
Cel de-al doilea factor este economic: 2000 este anul spargerii bulei Dot-com. Pentru cei mai tineri dintre voi, imaginați-vă ce a fost bitcoinul acum câțiva ani, startup-urile de internet erau la fel la sfârșitul anilor 90. Startup-urile adăugau .com la sfârșitul numelor lor pentru a obține investiții de risc uriașe (la fel cum avem un gaj de mySuperStartup.ai în zilele noastre), până când valoarea a scăzut brusc în anii 20. Aceasta este o explicație foarte rudimentară și vă invit să aruncați o privire la articolul de pe wikipedia pentru una mai bună.
Ideea este că Internetul a încetat să mai câștige tracțiunea de care avea nevoie pentru a face din JS și din tehnologiile legate de web un punct de interes. Mai târziu, odată cu ascensiunea Amazon, Facebook și Google, web-ul a avut un nou motiv de a fi și un nou motiv de a prospera. A fost logic să reluăm JS! Google a fost făcut public în 2004, Chrome a fost lansat în 2008 și a devenit cel mai popular browser în 2014: cu un an înainte de sosirea ES6.
Ce lipsește? (Propuneri respinse)
Object.observe
Aceasta este probabil cea mai mare respingere dintre toate. Inițial, permitea JS să observe orice valoare din cod :
var obj = {
foo: 0,
bar: 1
};
Object.observe(obj, function(changes) {
console.log(changes);
});obj.baz = 2;
//
Aceasta era o caracteristică grozavă și, evident, o poți face din codul tău (sau cu un polyfill), dar implementarea în browser era promisiunea unui cod reactiv mai rapid (ex: Angular folosește foarte mult observarea). A fost retrasă pentru că nu au putut ajunge la o implementare cu o performanță constantă. Mai multe detalii aici.
Cancelable Promises
Simplu explicativ, o caracteristică, sunt sigur, nu este singura care lipsește. Ideea este de a permite dezvoltatorilor să anuleze executarea oricărei promisiuni în orice moment.
Cazurile de utilizare variază, de exemplu, pentru a avea timeout pe partea clientului la o operațiune asincronă sau, de exemplu, dacă aveți un sistem de navigare bazat pe tab-uri, iar utilizatorul face clic pe un tab înainte de a avea timp să încărcați conținutul tab-ului curent.
blöcks
Îl menționez pe acesta doar pentru că îmi place numele, dar și pentru că este o caracteristică drăguță comparabilă cu Go Routines sau C# Tasks.
const blöck = await {|
// This code is Async, but most importantly, executed in another thread
|};
Alte
Au mai fost făcute câteva propuneri interesante, cum ar fi constructori apelabili. Cele mai multe dintre acestea sunt fie retrase pentru că autorul original a făcut acest lucru, fie respinse pentru că intră în conflict sau se suprapun cu caracteristici existente/planificate.
.
Lasă un răspuns