![]()
Quando scrivi codice JavaScript, può capitare spesso di dover verificare se un valore è davvero un numero oppure no. Questa verifica è utile, ad esempio, quando l’utente inserisce dati in un form, quando ricevi valori da un’API o quando devi eseguire calcoli solo su input validi.
In questo articolo vediamo diversi modi per controllare se una variabile contiene un numero, con esempi pratici e facili da capire.
Controllare con typeof
Il modo più semplice per verificare il tipo di una variabile è usare typeof.
let valore = 25;
if (typeof valore === "number") {
console.log("La variabile contiene un numero.");
} else {
console.log("La variabile non contiene un numero.");
}
In questo caso il risultato sarà positivo perché valore contiene effettivamente un numero.
Attenzione però: typeof controlla solo il tipo, non verifica se il valore è valido in ogni situazione. Per esempio, NaN è ancora di tipo number, anche se non rappresenta un numero utilizzabile.
let valore = NaN;
console.log(typeof valore); // "number"
2. Controllare con isNaN()
Un altro metodo è usare isNaN(), che serve a capire se un valore non è un numero.
javascriptlet valore = "abc";
if (isNaN(valore)) {
console.log("Non è un numero.");
} else {
console.log("È un numero.");
}
Questo metodo fa una conversione implicita, quindi può dare risultati non sempre immediati da interpretare. Per questo motivo, spesso è meglio usare la versione più moderna:
javascriptNumber.isNaN()
Esempio:
let valore = NaN;
if (Number.isNaN(valore)) {
console.log("Il valore è NaN.");
}
Questa funzione controlla solo se il valore è davvero NaN, senza fare conversioni automatiche.
3. Controllare se una stringa può diventare un numero
Molto spesso il valore arriva da un campo di testo e quindi è una stringa. In questi casi possiamo usare Number() per provare la conversione.
let valore = "42";
if (!isNaN(Number(valore))) {
console.log("La stringa può essere convertita in un numero.");
} else {
console.log("La stringa non è un numero valido.");
}
Questo approccio è utile quando vuoi accettare valori numerici scritti come testo.
Per esempio:
"123"→ valido."12.5"→ valido."ciao"→ non valido.
4. Verifica completa con Number.isFinite()
Se vuoi controllare che un valore sia un numero reale e finito, puoi usare Number.isFinite().
javascriptlet valore = 10;
if (Number.isFinite(valore)) {
console.log("È un numero finito.");
} else {
console.log("Non è un numero valido.");
}
Questo metodo esclude:
NaNInfinity-Infinity
Quindi è molto utile quando vuoi fare controlli più affidabili prima di eseguire operazioni matematiche.
Vediamo ora un esempio completo con un campo di testo e un pulsante.
5. Esempio pratico con un input
<input type="text" id="numero" placeholder="Inserisci un numero">
<button id="controlla">Controlla</button>
<p id="risultato"></p>
<script>
const input = document.getElementById("numero");
const button = document.getElementById("controlla");
const risultato = document.getElementById("risultato");
button.addEventListener("click", function () {
const valore = input.value;
if (!isNaN(Number(valore)) && valore.trim() !== "") {
risultato.textContent = "Hai inserito un numero valido.";
} else {
risultato.textContent = "Il valore inserito non è un numero.";
}
});
</script>
In questo esempio:
- si legge il valore inserito dall’utente,
- si prova a convertirlo in numero,
- si mostra un messaggio in base al risultato.
6. Quale metodo usare
Dipende dal caso:
typeofva bene per controllare il tipo base di una variabile.isNaN()può servire nei controlli rapidi.Number.isNaN()è più preciso per verificareNaN.Number.isFinite()è ottimo per controlli più rigorosi.Number()è utile quando il valore arriva da una stringa.
Se stai lavorando con input utente, spesso la combinazione più pratica è:
if (!isNaN(Number(valore)) && valore.trim() !== "") {
// valore numerico
}
Conclusione
Controllare se una variabile contiene un numero è una delle operazioni più utili in JavaScript. Conoscere i vari metodi ti permette di scegliere quello giusto in base al contesto e di evitare errori nei tuoi script.
Se lavori spesso con form, calcoli o dati provenienti dall’utente, questa verifica ti sarà molto utile in tantissimi casi.
Posso scriverti anche il prossimo articolo nello stesso stile, per esempio su:
- come verificare se una stringa è vuota,
- come invertire una stringa in JavaScript,
- come controllare se un numero è pari o dispari.
