La mayorÃa de las veces, los operadores y las funciones convierten automáticamente los valores que reciben al tipo de dato que necesitan.
Por ejemplo: alert convierte automáticamente cualquier valor a string para mostrarlo, y las operaciones matemáticas convierten los valores a números.
También hay casos donde necesitamos convertir de manera explÃcita un valor al tipo esperado.
En este capÃtulo no cubrimos objetos. Por ahora, solamente veremos valores primitivos.
Más adelante, después de haberlos tratado, veremos en el capÃtulo Conversión de objeto a valor primitivo cómo funciona la conversión.
Conversión a String
La conversión a string ocurre cuando necesitamos la representación textual de un valor.
Por ejemplo, alert(value) lo hace para mostrar value como texto.
También podemos llamar a la función String(value) para convertir value a string:
let value = true;
alert(typeof value); // boolean
value = String(value); // ahora value es el string "true"
alert(typeof value); // string
La conversión a string es bastante evidente. El boolean false se convierte en "false", null en "null", etc.
Conversión numérica
La conversión numérica ocurre automáticamente en funciones matemáticas y expresiones.
Por ejemplo, cuando se aplica la división / a valores no numéricos:
alert( "6" / "2" ); // 3, los strings son convertidos a números
Podemos usar la función Number(value) para convertir value a un número de forma explÃcita:
let str = "123";
alert(typeof str); // string
let num = Number(str); // se convierte en 123
alert(typeof num); // number
Usualmente, se requiere conversión explÃcita cuando leemos un valor desde una fuente basada en texto, como un formulario, pero esperamos que sea un número.
Si el string no es un número válido, el resultado de la conversión será NaN. Por ejemplo:
let age = Number("un texto arbitrario en vez de un número");
alert(age); // NaN, conversión fallida
Reglas de conversión numérica:
| Valor | Se convierte en⦠|
|---|---|
undefined |
NaN |
null |
0 |
true and false |
1 y 0 |
string |
Se eliminan los espacios en blanco (incluyendo espacios, tabs \t, saltos de lÃnea \n, etc.) del inicio y final del texto. Si el string resultante es vacÃo, el resultado es 0, en caso contrario el número es âleÃdoâ del string. Un error devuelve NaN. |
Ejemplos:
alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN (error al leer el número cuando encuentra "z")
alert( Number(true) ); // 1
alert( Number(false) ); // 0
Es importante notar que null y undefined se comportan de distinta manera aquÃ: null se convierte en 0 mientras que undefined se convierte en NaN.
La mayorÃa de los operadores matemáticos también ejecutan dicha conversión, esto lo veremos en el siguiente capÃtulo.
Conversión booleana
La conversión a boolean es la más simple.
Ocurre en operaciones lógicas (más adelante veremos test condicionales y otras cosas similares), pero también puede realizarse de forma explÃcita llamando a la función Boolean(value).
Las reglas de conversión:
- Los valores que son intuitivamente âvacÃosâ, como
0,"",null,undefined, yNaN, se convierten enfalse. - Otros valores se convierten en
true.
Por ejemplo:
alert( Boolean(1) ); // true
alert( Boolean(0) ); // false
alert( Boolean("hola") ); // true
alert( Boolean("") ); // false
"0" es trueAlgunos lenguajes (como PHP) tratan "0" como false. Pero en JavaScript, un string no vacÃo es siempre true.
alert( Boolean("0") ); // true
alert( Boolean(" ") ); // sólo espacios, también true (cualquier string no vacÃo es true)
Resumen
Las tres conversiones de tipo más usadas son a string, a número y a boolean.
Conversión a String â Ocurre cuando mostramos un valor. Se puede realizar con String(value). La conversión a string es usualmente evidente para los valores primitivos.
Conversión numérica â Ocurre en operaciones matemáticas. Se puede realizar con Number(value).
La conversión sigue las reglas:
| Valor | Se convierte en⦠|
|---|---|
undefined |
NaN |
null |
0 |
true / false |
1 / 0 |
string |
El string es leÃdo âcomo esâ, los espacios en blanco (incluye espacios, tabs \t, saltos de lÃnea \n, etc.) tanto al inicio como al final son ignorados. Un string vacÃo se convierte en 0. Un error entrega NaN. |
Conversión booleana â Ocurren en operaciones lógicas. Se puede realizar con Boolean(value).
Sigue las reglas:
| Valor | Se convierte en⦠|
|---|---|
0, null, undefined, NaN, "" |
false |
| cualquier otro valor | true |
La mayorÃa de estas reglas son fáciles de entender y recordar. Las excepciones más notables donde se suele cometer errores son:
undefinedesNaNcomo número, no0."0"y textos que solo contienen espacios como" "sontruecomo boolean.
Los objetos no son cubiertos aquÃ. Volveremos a ellos más tarde en el capÃtulo Conversión de objeto a valor primitivo que está dedicado exclusivamente a objetos después de que aprendamos más cosas básicas sobre JavaScript.
Comentarios
<code>, para varias lÃneas â envolverlas en la etiqueta<pre>, para más de 10 lÃneas â utilice una entorno controlado (sandbox) (plnkr, jsbin, codepenâ¦)