JavaScript: controllare se una variabile contiene un numero

JavaScript controllare se una variabile contiene un numero

Loading

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:

  • NaN
  • Infinity
  • -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:

  • typeof va bene per controllare il tipo base di una variabile.
  • isNaN() può servire nei controlli rapidi.
  • Number.isNaN() è più preciso per verificare NaN.
  • 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)) &amp;&amp; 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.