Un semplice test di verifica sul comportamento del metodo globale parseInt() in JavaScript.
parseInt() restituisce il valore NaN (Not A Number) quando la conversione di un dato non restituisce un numero intero.
Questo metodo nasce per convertire una stringa numerica nel numero intero equivalente. Tuttavia, dato che JavaScript è un linguaggio debolmente tipizzato che attualmente non supporta il type hinting per gli argomenti delle funzioni, non è inusuale passare accidentalmente valori diversi da una stringa numerica a parseInt().
Possiamo verificarne il comportamento effettuando questo semplice test:
'use strict';
const values = ['10', '5.2', 10, 5.2, true, false, null, {a: 1}, {}, [1], []];
values.forEach(value => {
console.log(value + ': ' + parseInt(value, 10));
});
Avremo questi risultati:
Input | Output |
---|---|
'10' | 10 |
'5.2' | 5 |
10 | 10 |
5.2 | 5 |
true | NaN |
false | NaN |
null | NaN |
{a: 1} | NaN |
{} | NaN |
[1] | 1 |
[] | NaN |
Il comportamento segue ovviamente le specifiche ECMAScript, ma come si può notare nel caso dei valori booleani e degli array, tale comportamento non è immediatamente intuibile.