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:

javascriptfunction 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

javascriptisFinite(valore);

Esempio

Ora isFinite visualizzerà true, poiché il parametro è un numero:

javascriptlet num = 3;
console.log(isFinite(num));

Risultato dell'esecuzione del codice:

javascripttrue

Esempio

Ora isFinite visualizzerà false, poiché il parametro non è un numero:

javascriptlet num = 'abcde';
console.log(isFinite(num));

Risultato dell'esecuzione del codice:

javascriptfalse

Esempio

Ora isFinite visualizzerà false, poiché il parametro è infinito:

javascriptlet num = Infinity;
console.log(isFinite(num));

Risultato dell'esecuzione del codice:

javascriptfalse

Esempio

Ora isFinite visualizzerà false, poiché 1/0 - è essenzialmente Infinity (infinito):

javascriptlet num = 1 / 0;
console.log(isFinite(num));

Risultato dell'esecuzione del codice:

javascriptfalse

Esempio

Ora isFinite visualizzerà true, poiché una stringa vuota, sebbene non sia un numero, - è un'eccezione:

javascriptlet num = '';
console.log(isFinite(num));

Risultato dell'esecuzione del codice:

javascripttrue

Vedi anche

  • la funzione isNaN,
    che effettua un controllo per NaN
  • l'operatore typeof,
    che determina il tipo di dati