Saltar al contenido principal
eLearner.app
Módulo 2 · Lección 4 de 48/32 en el curso~8 min
Lecciones del módulo (4/4)

Conversiones de tipo

Continuamente debes transformar el tipo de un valor: el value de un input HTML llega como string aunque represente un número, una API te devuelve strings para formatear, debes registrar un objeto como texto. JS ofrece tres familias de conversiones: explícitas, parsers dedicados y (a evitar) implícitas.

Conversiones explícitas

Son las más claras y deberían ser tu opción por defecto:

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 y parseFloat: parsers tolerantes

A diferencia de Number(...), parseInt y parseFloat ignoran la parte final no numérica de la cadena: se detienen en el primer carácter no válido.

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

toFixed para formatear números como strings

Visto rápidamente en la lección anterior: redondea a N decimales y devuelve una cadena (string).

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

Para volver a convertirla a number, usa el prefijo Number(...) o el unary +:

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

NaN: el valor que te muerde

NaN ("Not a Number") nace de operaciones numéricas que fallan:

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

Características:

  • es de tipo 'number' (sí, un "non-número" es un número)
  • no es igual a sí mismo: NaN === NaN es false
  • para probarlo, usa la función Number.isNaN(x)
JS
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // true

Pruébalo tú mismo

Ejercicio#js.m2.l4.e1
Intentos: 0Cargando...

Dada la cadena '128.95 EUR', extrae el número (decimal) y redondéalo a la primera cifra decimal, devolviéndolo como number. Esperado: 129.

Cargando editor...
Mostrar pista

parseFloat ignora 'EUR'; .toFixed(0) redondea al entero como string; Number(...) vuelve a convertir a number.

Solución disponible después de 3 intentos

Ejercicio de repaso

Ejercicio#js.m2.l4.e2
Intentos: 0Cargando...

Dado `n = Number('non un numero')`, escribe una sola expresión que evalúe a true si el resultado es NaN.

Cargando editor...
Mostrar pista

Usa Number.isNaN, no n === NaN: NaN no es igual a sí mismo.

Solución disponible después de 3 intentos