Passer au contenu principal
eLearner.app
Module 2 · Leçon 4 sur 48/32 dans le cours~8 min
Leçons du module (4/4)

Conversioni di tipo

Continuamente devi trasformare il tipo di un valore: il value di un input HTML arriva come stringa anche se rappresenta un numero, un'API ti restituisce stringhe da formattare, devi loggare un oggetto come testo. JS offre tre famiglie di conversioni: esplicite, parser dedicati, e (da evitare) implicite.

Conversioni esplicite

Sono le più chiare e dovrebbero essere il tuo default:

JS
Number('42'); // 42
Number('3.14'); // 3.14
Number(''); // 0     ← attenzione
Number('  10 '); // 10     (spazi vengono ignorati)
Number('ciao'); // NaN    ← non rappresenta un numero

String(42); // '42'
String(true); // 'true'
String(null); // 'null'
String(undefined); // 'undefined'

Boolean(1); // true
Boolean(0); // false
Boolean(''); // false
Boolean('abc'); // true

parseInt e parseFloat: parser tolleranti

A differenza di Number(...), parseInt e parseFloat ignorano la coda non numerica della stringa: si fermano al primo carattere non valido.

JS
Number('42px'); // NaN
parseInt('42px'); // 42
parseFloat('3.14em'); // 3.14
parseInt('   12 anni'); // 12
parseInt('ciao12'); // NaN  ← deve iniziare con cifre

toFixed per formattare numeri come stringhe

Visto rapidamente nella lezione precedente: arrotonda a N decimali e restituisce una stringa.

JS
(3.14159).toFixed(2); // '3.14'
(1).toFixed(2); // '1.00'

Per riconvertirla in number usa il prefisso Number(...) o l'unary +:

JS
Number((3.14159).toFixed(2)); // 3.14
+(3.14159).toFixed(2); // 3.14

NaN: il valore che ti morde

NaN ("Not a Number") nasce da operazioni numeriche che falliscono:

JS
Number('ciao'); // NaN
0 / 0; // NaN
parseInt('xxx'); // NaN

Caratteristiche:

  • è di tipo 'number' (sì, un "non-numero" è un numero)
  • non è uguale a se stesso: NaN === NaN è false
  • per testarlo usa la funzione Number.isNaN(x)
JS
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // true

Prova tu

Exercice#js.m2.l4.e1
Tentatives : 0Chargement…

Data la stringa '128.95 EUR', estrai il numero (decimale) e arrotondalo alla prima cifra decimale, restituendolo come number. Atteso: 129.

Chargement de l'éditeur…
Afficher l'indice

parseFloat ignora 'EUR'; .toFixed(0) arrotonda all'intero come stringa; Number(...) riconverte a number.

Solution disponible après 3 tentatives

Esercizio di ripasso

Exercice#js.m2.l4.e2
Tentatives : 0Chargement…

Dato `n = Number('non un numero')`, scrivi una sola espressione che valuta a true se il risultato e' NaN.

Chargement de l'éditeur…
Afficher l'indice

Usa Number.isNaN, non n === NaN: NaN non e' uguale a se stesso.

Solution disponible après 3 tentatives