preloader

Conversiones de Tipos

La mayoría de las veces, los operadores y funciones convierten automáticamente los valores que reciben al tipo adecuado. Esto se conoce como “conversión de tipo”.

Por ejemplo, alert convierte automáticamente cualquier valor a string para mostrarlo. Las operaciones matemáticas transforman los valores a números.

También hay casos donde necesitamos convertir explícitamente un valor al tipo esperado.

Aún no hablamos de objetos

En este capítulo, no trataremos objetos. Por ahora, solo trabajaremos con valores primitivos.

Más adelante, en el capítulo sobre la Conversión de objeto a valor primitivo, veremos cómo funciona la conversión de objetos.

Conversión a String

La conversión a string ocurre cuando necesitamos la representación en texto de un valor.

Por ejemplo, alert(value) lo hace para mostrar el valor como texto.

También podemos llamar a la función String(value) para convertir un valor a string:

				
					let valor = true;
alert(typeof valor); // boolean

valor = String(valor); // ahora valor es el string "true"
alert(typeof valor); // string

				
			

La conversión a string es bastante directa. El booleano false se convierte en «false», null en «null», etc.

Conversión a Número

La conversión a número ocurre automáticamente en funciones matemáticas y expresiones.

Por ejemplo, cuando se dividen valores no numéricos usando /:

				
					alert( "6" / "2" ); // 3, los strings son convertidos a números

				
			

Podemos usar la función Number(value) para convertir de forma explícita un valor a un número:

				
					let str = "123";
alert(typeof str); // string

let num = Number(str); // se convierte en 123

alert(typeof num); // number

				
			

La conversión explícita es necesaria cuando leemos un valor desde una fuente basada en texto, como los campos de texto en los formularios, pero esperamos que contengan un valor numérico.

Si el string no es un número válido, el resultado de la conversión será NaN. Por ejemplo:

				
					let edad = Number("un texto arbitrario en vez de un número");

alert(edad); // NaN, conversión fallida

				
			

Reglas de conversión numérica:

ValorSe convierte en…
undefinedNaN
null0
true y false1 y 0
stringSe eliminan los espacios (incluye espacios, tabs \t, saltos de línea \n, etc.) al inicio y final del texto. Si el string resultante está 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 un número en "z")
alert( Number(true) );        // 1
alert( Number(false) );       // 0
				
			

Ten en cuenta que null y undefined se comportan de manera distinta aquí: null se convierte en 0 mientras que undefined se convierte en NaN.

Suma y concatenación de strings

Casi todas las operaciones matemáticas convierten valores a números. Una excepción notable es la suma +. Si uno de los valores sumados es un string, el otro valor se convierte a string.

Luego, los concatena (une):

				
					alert( 1 + '2' ); // '12' (string a la derecha)
alert( '1' + 2 ); // '12' (string a la izquierda)

				
			

Esto ocurre solo si al menos uno de los argumentos es un string, en caso contrario los valores son convertidos a número.

Conversión a Booleano

La conversión a booleano 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, y NaN, se convierten en false.
  • Otros valores se convierten en true.

Por ejemplo:

				
					alert( Boolean(1) ); // true
alert( Boolean(0) ); // false

alert( Boolean("hola") ); // true
alert( Boolean("") ); // false

				
			

Nota: el string con un cero «0» es true.
Algunos lenguajes (como PHP) tratan «0» como false. Pero en JavaScript, un string no vacío es siempre true.

				
					alert( Boolean("0") ); // true
alert( Boolean(" ") ); // solo espacios, también true (cualquier string no vacío es true)

				
			

Resumen

Las tres conversiones de tipo más comunes son a string, a número y a booleano.

  • ToString: Ocurre cuando se muestra algo. Se puede realizar con String(value). La conversión a string es usualmente obvia para los valores primitivos.
  • ToNumber: Ocurre en operaciones matemáticas. Se puede realizar con Number(value).

La conversión sigue las reglas:

ValorSe convierte en…
undefinedNaN
null0
true / false1 / 0
stringEl 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.
  • ToBoolean: Ocurren en operaciones lógicas. Se puede realizar con Boolean(value).

Sigue las reglas:

ValorSe convierte en…
0, null, undefined, NaN, «»false
cualquier otro valortrue

La mayoría de estas reglas son fáciles de entender y recordar. Las excepciones más notables donde la gente suele cometer errores son:

  • undefined es NaN como número, no 0.
  • «0» y textos que solo contienen espacios como » » son true como booleano.

Los objetos no se tratan aquí. Volveremos a ellos más adelante en el capítulo sobre 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.

Related Post

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *