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)

Conversions de type

Tu dois constamment convertir le type d'une valeur : le value d'un champ de saisie HTML arrive sous forme de chaîne même s'il représente un nombre, une API te renvoie des chaînes à formater, tu dois journaliser un objet sous forme de texte. JS propose trois familles de conversions : explicites, parsers dédiés, et (à éviter) implicites.

Conversions explicites

Ce sont les plus claires et elles devraient être ton choix par défaut :

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 et parseFloat : des parsers tolérants

À la différence de Number(...), parseInt et parseFloat ignorent la fin non numérique de la chaîne : ils s'arrêtent au premier caractère non valide.

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

toFixed pour formater des nombres sous forme de chaînes

Vu rapidement dans la leçon précédente : arrondit à N décimales et renvoie une chaîne.

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

Pour la reconvertir en number, utilise le préfixe Number(...) ou le + unaire :

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

NaN : la valeur qui te mord

NaN ("Not a Number") provient d'opérations numériques qui échouent :

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

Caractéristiques :

  • elle est de type 'number' (oui, un "non-nombre" est un nombre)
  • elle n'est pas égale à elle-même : NaN === NaN est false
  • pour la tester, utilise la fonction Number.isNaN(x)
JS
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // true

À toi de jouer

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

Étant donné la chaîne '128.95 EUR', extrais le nombre (décimal) et arrondis-le au premier chiffre après la virgule, en le renvoyant sous forme de number. Attendu : 129.

Chargement de l'éditeur…
Afficher l'indice

parseFloat ignore 'EUR'; .toFixed(0) arrondit à l'entier sous forme de chaîne ; Number(...) reconvertit en number.

Solution disponible après 3 tentatives

Exercice de révision

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

Étant donné `n = Number('non un numero')`, écris une seule expression qui vaut true si le résultat est NaN.

Chargement de l'éditeur…
Afficher l'indice

Utilise Number.isNaN, pas n === NaN : NaN n'est pas égal à lui-même.

Solution disponible après 3 tentatives