Ottimizzazione delle operazioni ripetute in JavaScript
Spesso i programmatori principianti eseguono indiscriminatamente la stessa funzione più volte, spreccando risorse.
Diamo un'occhiata a un esempio. Supponiamo di avere una stringa che contiene un certo percorso:
let path = 'img.png';
Supponiamo di dover verificare
se il percorso termina con l'estensione
.png o .jpg. Alcuni
programmatori principianti hanno scritto
la seguente soluzione:
let path = 'img.png';
if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Cosa non va in questa soluzione? Il problema è
che il metodo slice viene chiamato due volte,
facendo la stessa cosa. Questo, ovviamente,
non è ottimale.
Per ottimizzare, è necessario eseguire il taglio della stringa una volta, salvare il risultato in una variabile, e poi utilizzare questa variabile in seguito:
let path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Ottimizza il codice qui sotto:
let num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Ottimizza il codice qui sotto:
let date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Ottimizza il codice qui sotto:
let date = new Date();
let res;
if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
res = 'year ' + date.getFullYear() + ' fits';
} else {
res = 'year ' + date.getFullYear() + ' doesn't fit';
}
console.log(res)