JavaScript, ES6, ES7, ES10 a che punto siamo?
Il Gennaio 26, 2022 da adminES6 e ES7 – promemoria
Non ho intenzione di insultarvi, e scrivere l’ennesima introduzione a ES6… Ma in realtà, lo farò. In poche parole, ES6 (o ES2015) è il gruppo di funzioni che hanno superato la fase 4 secondo la pietra miliare del 2015. In altre parole, se hai una buona comprensione di ES6 e qualche conoscenza di ES7, hai circa 4 anni per recuperare…Nessuna pressione.
Diamo un’occhiata a ciò che è ufficialmente parte di ES6. A proposito, tutte queste caratteristiche sono ufficialmente supportate da tutti i browser. In altre parole, non hai bisogno di Babel per usarle (a meno che tu non supporti IE 11, che ne manca qualcuna).
In ES6 abbiamo:
La possibilità di creare ed ereditare classi.
class MyComponent extends React.Components {}
Moduli ES6 con import ed export.
import * from 'React';export default MyComponent;
Generatori
let fibonacci = {
*() {
let pre = 0, cur = 1
for (;;) {
=
yield cur
}
}
}
Hai notato? Decoratori, destrutturazione degli oggetti (come React props: {…props}) e così via non fanno parte di ES6!
Per quanto riguarda ES7 (ES2016) ecco cosa abbiamo. È un aggiornamento abbastanza piccolo:
- L’operatore di esponenziazione
base ** exponent
- Array include
array.includes(myItem) // true or false
Fonte: http://ecma-international.org/ecma-262/7.0/
Come avrete probabilmente notato, no, Async/Await non fa parte di ES7, ma di ES8!
ES8, ES9, ES10
Tutti quelli che hanno avuto un colloquio relativo a JavaScript negli ultimi 2 anni, si sono sentiti chiedere almeno 1671 volte cos’è ES6, e quali caratteristiche porta. Ma qualcuno ha notato come JS ovviamente non si sia fermato improvvisamente a ES6 o ES7, eppure, nessuno vi sta chiedendo nulla a riguardo? Ecco la vostra opportunità di fare le cose per bene!
In ES8 (ES2017), ecco le caratteristiche disponibili:
E naturalmente, le funzioni Async / Await:
Se avete seguito l’articolo, ormai dovreste averlo capito: Con solo piccole eccezioni, essendo queste funzioni di fase 4, sei in grado di usarle nei browser senza Babel (detto questo, essendo ES8 ES2017, è ancora abbastanza recente e alcune implementazioni come Edge e il motore nativo di Opera sono un po’ indietro).

Passiamo a ES9. Proprio come ES8 e ES6, ES9 (o ES2018) è un aggiornamento piuttosto importante:

Finalmente, passando a ES10 (o ES2019)!
const array = ;array.sort(...)/*
*/
- Rendere JavaScript un superset di JSON (vedi i dettagli qui)
E ES5?
Se ES6 è ES2015, e ES7 è ES2016, puoi indovinare qual è l’anno di ES5?
…Hai perso! (A meno che tu non lo sappia davvero, ma dato che non posso sentirti, presumo che tu abbia perso). ES5 è ES2009!
Non finisce qui, prima di ES5, l’ultimo aggiornamento di ES è stato nel 1999!

Come puoi vedere, dal 97 al 99, gli aggiornamenti erano abbastanza frequenti, poi ES5 stava per essere l’unico aggiornamento in 16 anni!

Come si spiega questo? Beh, secondo me, ci sono due fattori. Il primo è tecnico: JavaScript fa schifo. Onestamente, è così. All’epoca, avevamo alcune alternative a JS: Java Applets, ActiveX, e anche Flash.
Fino al 2011 circa (quando Chrome ha iniziato ad essere un proiettile) non solo queste tecnologie erano un ordine di grandezza più veloce di JS, ma avevano anche già la maggior parte delle caratteristiche che stiamo ancora lottando per ottenere in JS al giorno d’oggi. (Java ha tutte le caratteristiche del linguaggio come classi e decoratori, supporto multi-threading, OpenGL, Sockets, ecc…). Quando Chrome e Google sono entrati in scena e hanno annunciato nel 2013 che Java era fuori (e poi Flash ha seguito), la crociata per rendere JS al passo con i suoi concorrenti era in corso. Due anni dopo, avevamo ES6 alle porte.
Il secondo fattore è economico: il 2000 è l’anno dello scoppio della bolla Dot-com. Per i più giovani di voi, immaginate cosa è stato il bitcoin qualche anno fa, le startup di Internet erano lo stesso alla fine degli anni ’90. Le startup aggiungevano .com alla fine dei loro nomi per ottenere enormi investimenti di venture (proprio come oggi abbiamo un pegno di mySuperStartup.ai) fino a quando il valore è sceso improvvisamente negli anni 20. Questa è una spiegazione molto rudimentale, e vi invito a dare un’occhiata all’articolo di wikipedia per una migliore.
Il punto è che Internet ha smesso di guadagnare la trazione necessaria per rendere JS e le tecnologie legate al web un focus. Più tardi, con l’ascesa di Amazon, Facebook e Google, il web ha avuto una nuova ragione d’essere, e una nuova ragione per prosperare. Era logico che riprendessimo in mano JS! Google è stato reso pubblico nel 2004, Chrome è stato rilasciato nel 2008, ed è diventato il browser più popolare nel 2014: un anno prima che arrivasse ES6.
Cosa manca? (Proposte respinte)
Object.observe
Questo è probabilmente il più grande rifiuto di tutti. Inizialmente permetteva a JS di osservare qualsiasi valore nel codice :
var obj = {
foo: 0,
bar: 1
};
Object.observe(obj, function(changes) {
console.log(changes);
});obj.baz = 2;
//
Questa era una grande caratteristica, e ovviamente, puoi farlo dal tuo codice (o con un polyfill) ma implementarlo nel browser era la promessa di un codice reattivo più veloce (es: Angular usa molto l’osservazione). È stato ritirato perché non potevano arrivare a un’implementazione con prestazioni costanti. Maggiori dettagli qui.
Promesse annullabili
Self-explanatory, una caratteristica, sono sicuro, non è l’unica che manca. L’idea è quella di permettere agli sviluppatori di annullare l’esecuzione di qualsiasi promessa in qualsiasi momento.
I casi d’uso variano, per esempio, per avere un timeout lato client su operazioni async, o per esempio, se avete un sistema di navigazione a schede, e l’utente fa clic su una scheda prima che abbiate avuto il tempo di caricare il contenuto della scheda corrente.
blöcks
Lo menziono solo perché mi piace il nome, ma anche perché è una bella caratteristica paragonabile a Go Routines o C# Tasks.
const blöck = await {|
// This code is Async, but most importantly, executed in another thread
|};
Altri
Sono state fatte alcune altre proposte interessanti, come costruttori richiamabili. La maggior parte di queste sono state ritirate perché l’autore originale l’ha fatto, o rifiutate perché sono in conflitto o si sovrappongono a caratteristiche esistenti/previste.
Lascia un commento