Nel caso in cui fossimo interessati a controllare se una determinata variabile o una proprietà di un oggetto è null
oppure undefined
possiamo fare buon uso della coercizione e limitarci a scrivere:
if(something == null) {
//...
}
oppure:
if(something == undefined) {
//...
}
Questi due snippet sono perfettamente equivalenti e corrispondono al 100% al più verboso doppio check:
if(something === null || something === undefined) {
//...
}
Potrebbe poi accadere che vogliamo eseguire un controllo simile per poter utilizzare, se fosse necessario, un valore di default. ES2020 ci mette a disposizione l'operatore ??
:
const alwaysDefined = something ?? "unknown";
Questo operatore restituisce il valore di default "unknown"
se e solo se something
è null
oppure undefined
. Questa è una marcata differenza rispetto all'operatore ||
che utilizzerebbe il valore di default anche nel caso in cui something
fosse una stringa vuota.
Il modo più rapido per diminuire, o addirittura azzerare, gli elementi contenuti in un array è quello di modificare manualmente la proprietà length
:
const array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(array); // print [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
array.length = 4;
console.log(array); // print [0, 1, 2, 3]
array.length = 0;
console.log(array); // print []
Per fare ciò è molto comodo il metodo slice
poiché come indice di partenza può essere utilizzato un numero negativo, al quale corrisponde un dato elemento partendo dalla fine dell'array. Ecco che per ottenere, ad esempio, il terzultimo elemento possiamo scrivere:
const el = array.slice(-3)[0];
Nel caso in cui l'array avesse meno di tre elementi, il valore di questa espressione sarebbe undefined
.