La funzione parseInt() di Javascript
La funzione parseInt() del linguaggio Javascript mi permette di convertire una stringa in un numero intero.
parseInt(x)
L'argomento x è una stringa o una variabile alfanumerica.
La funzione mi restituisce in uscita il valore numerico in formato intero.
Ad esempio, questo script esegue una concatenazione tra una stringa e un numero.
myVar = "123";
document.write(myVar+4);
In questi casi Javascript converte automaticamente l'operando numerico in una stringa. Poi esegue la concatenazione.
Il risultato in output è un'altra stringa
1234
In quest'altro script utilizzo la funzione parseInt() per convertire la variabile myVar che contiene la stringa "123" in un numero intero (123).
myVar = "123";
myVar = parseInt(myVar);
document.write(myVar+4);
In questo caso quando Javascript incontra l'operatore + lo esegue come operatore dell'addizione 123+4 perché entrambi gli operandi sono dei valori numerici.
Il risultato in output è la somma dei due numeri interi 123+4=127
127
La funzione parseInt è una delle funzioni di casting del linguaggio javascript.
Cosa accade se la stringa contiene anche lettere?
Se la variabile da convertire contiene anche lettere, il risultato della funzione parseInt() dipende dalla posizione dei numeri
Ad esempio, nel caso in cui i numeri sono all'inizio della stringa, quando Javascript incontra la prima lettera trasforma la stringa iniziale in un valore numerico intero.
myVar = "123abc";
myVar = parseInt(myVar);
document.write(myVar);
Il risultato in output è
123
Viceversa, se i numeri si trovano dopo una lettera, Javascript restituisce un errore NaN (Not a Number)
myVar = "abc123";
myVar = parseInt(myVar);
document.write(myVar);
Il risultato in output è
NaN
Per evitare l'errore NaN è utile verificare preventivamente se la stringa è convertibile in un numero oppure no tramite la funzione isNaN(x)
isNaN("abc12.5")
Quando la funzione restituisce il valore booleano false se la stringa x è convertibile in un numero
In questo esempio restituisce false perché la stringa "abc12.5" non è convertibile.
false
E così via.