[vc_row][vc_column][vc_column_text]Molti dicono che con l’avvento di ECMAScript 2015 si sia aperta una nuova era per il linguaggio Javascript e credo che non si possa fare a meno di concordare.
Da quel momento lo standard sta progredendo a passo costante (un aggiornamento all’anno) fortunatamente con un numero di features contenuto così da lasciarci il tempo di imparare e metabolizzare senza fretta.
Ormai con il crescente numero di frameworks, transpilers e strumenti che ci permettono di scrivere codice sempre aggiornato all’ultimo standard forse la maggior parte di noi non si preoccupa neanche più se una feature appartiene ad ES6, 7 o 9.
Io però credo sia interessante sapere quali features appartengono a quale standard così ho deciso di scrivere una serie di articoli per riscoprirli tutti, anno per anno.
Cominciamo dunque con ECMAScript 2016 (ES7).[/vc_column_text][vc_column_text]
Operatore Esponenziale
L’operatore esponenziale **
è una comoda scorciatoia al metodo Math.pow()
.
1 2 3 4 |
2 ** 3 // 8 Infinity ** 2 // Infinity (-Infinity) ** 2 // Infinity 'a' ** 3 // NaN |
Come gli altri operatori quando possibile effettua type coercion:
1 2 3 4 5 6 |
'' ** 2 // 0 '2' ** 3 // 8 2 ** '3' // 8 '2' ** '3' // 8 true ** 3 // 1 false ** 3 // 0 |
[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]
Array.prototype.includes()
Il metodo includes indica se l’elemento passato come argomento è presente nell’array.
1 2 3 4 5 6 |
const test = [1, 2, 3]; test.includes(1) // true test.includes(8) // false test.includes('hi') // false test.includes('1') // false |
Questo metodo accetta anche un secondo argomento, fromIndex, che sta ad indicare la posizione dell’array da cui si deve partire.
fromIndex può essere anche un valore negativo, in questo caso la posizione verrà calcolata tramite la formula array.length + fromIndex (ossia viene calcolata a ritroso partendo dalla fine dell’array).
1 2 3 4 5 6 |
const test = ['a', 'b', 'c', 'd', 'e']; test.includes('a', 2) // false test.includes('d', 2) // true test.includes('d', -2) // true test.includes('d', -20) // true (si prende in considerazione tutto l'array) |
[/vc_column_text][/vc_column][/vc_row]