Funzione isFinite
La funzione isFinite serve per verificare se il parametro
è un numero finito (cioè
non una stringa, un array, ecc. e non più
o meno infinito).
Come funziona questa funzione: restituirà false,
se il numero è più o meno infinito
(cioè Infinity)
o non è un numero (cioè NaN),
in tutti gli altri casi restituirà true.
Cioè stringhe, array, ecc. saranno convertiti
in NaN e di conseguenza restituiranno false.
Tuttavia ci sono eccezioni: una stringa vuota
'' restituisce true, una stringa con spazi ' '
restituisce anch'essa true, null
restituisce true, anche per i valori true e false
verrà restituito true.
Questo accade perché questi valori
vengono convertiti in numeri, e non in NaN.
Se avete bisogno di un controllo veramente preciso
per i numeri, che non consideri numeri una stringa
di spazi, valori booleani e valori speciali
- utilizzate la seguente funzione isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Analizziamo come funziona.
La funzione isFinite converte il parametro
in un numero e restituisce true, se questo non è Infinity,
-Infinity o NaN.
Pertanto, la parte destra scarterà i valori
chiaramente non numerici, ma lascerà valori
come true, false, null, la stringa vuota '' e
la stringa con spazi, poiché vengono convertiti correttamente
in numeri.
Per scartare questi valori, serve la funzione
parseFloat,
che per true, false, null, '', ' '
restituirà NaN. Così è progettata la funzione parseFloat: essa
converte il parametro in una stringa, cioè true,
false, null diventano 'true', 'false',
'null', e poi legge da essa un numero,
mentre la stringa vuota e la stringa con spazi
producono NaN. Poi il risultato di parseFloat viene elaborato
con !isNaN,
per ottenere true o false invece di NaN.
Di conseguenza, tutto viene scartato tranne le stringhe-numero
e i numeri ordinari.
Sintassi
isFinite(valore);
Esempio
Ora isFinite visualizzerà true,
poiché il parametro è un numero:
let num = 3;
console.log(isFinite(num));
Risultato dell'esecuzione del codice:
true
Esempio
Ora isFinite visualizzerà false,
poiché il parametro non è un numero:
let num = 'abcde';
console.log(isFinite(num));
Risultato dell'esecuzione del codice:
false
Esempio
Ora isFinite visualizzerà false,
poiché il parametro è infinito:
let num = Infinity;
console.log(isFinite(num));
Risultato dell'esecuzione del codice:
false
Esempio
Ora isFinite visualizzerà false,
poiché 1/0 - è essenzialmente Infinity
(infinito):
let num = 1 / 0;
console.log(isFinite(num));
Risultato dell'esecuzione del codice:
false
Esempio
Ora isFinite visualizzerà true,
poiché una stringa vuota, sebbene non sia un numero,
- è un'eccezione:
let num = '';
console.log(isFinite(num));
Risultato dell'esecuzione del codice:
true