La mayoría de las veces, los operadores y funciones convierten automáticamente los valores que se les dan al tipo correcto.
Por ejemplo, alert
convierte automáticamente cualquier valor en una cadena para mostrarlo. Las operaciones matemáticas convierten valores en números.
También hay casos en los que necesitamos convertir explícitamente un valor al tipo esperado.
Aún no hablamos de objetos
En este capítulo, no cubriremos objetos. Por ahora, hablaremos únicamente de primitivos.
Más adelante, después de que aprendamos sobre los objetos, en el capítulo Conversión de objetos a primitivos veremos cómo encajan los objetos.
La conversión de cadenas ocurre cuando necesitamos la forma de cadena de un valor.
Por ejemplo, alert(value)
lo hace para mostrar el valor.
También podemos llamar a la función String(value)
para convertir un valor en una cadena:
dejar valor = verdadero; alerta (tipo de valor); // booleano valor = Cadena (valor); // ahora el valor es una cadena "verdadera" alerta (tipo de valor); // cadena
La conversión de cadenas es bastante obvia. Un false
se convierte en "false"
, null
se convierte en "null"
, etc.
La conversión numérica en funciones y expresiones matemáticas se produce automáticamente.
Por ejemplo, cuando la división /
se aplica a elementos que no son números:
alerta( "6" / "2" ); // 3, las cadenas se convierten en números
Podemos usar la función Number(value)
para convertir explícitamente un value
en un número:
let cadena = "123"; alerta (tipo de cadena); // cadena let num = Número(cadena); // se convierte en el número 123 alerta (tipo de número); // número
Por lo general, se requiere una conversión explícita cuando leemos un valor de una fuente basada en cadenas, como un formulario de texto, pero esperamos que se ingrese un número.
Si la cadena no es un número válido, el resultado de dicha conversión es NaN
. Por ejemplo:
let edad = Número("una cadena arbitraria en lugar de un número"); alerta (edad); // NaN, la conversión falló
Reglas de conversión numérica:
Valor | Se convierte… |
---|---|
undefined | NaN |
null | 0 |
true and false | 1 y 0 |
string | Se eliminan los espacios en blanco (incluye espacios, tabulaciones t , nuevas líneas n etc.) desde el principio y el final. Si la cadena restante está vacía, el resultado es 0 . De lo contrario, el número se "lee" de la cadena. Un error da NaN . |
Ejemplos:
alerta( Número(" 123 ") ); // 123 alerta( Número("123z") ); // NaN (error al leer un número en "z") alerta (Número (verdadero)); // 1 alerta (Número (falso)); // 0
Tenga en cuenta que null
y undefined
se comportan de manera diferente aquí: null
se convierte en cero mientras que undefined
se convierte en NaN
.
La mayoría de los operadores matemáticos también realizan dicha conversión, lo veremos en el próximo capítulo.
La conversión booleana es la más sencilla.
Sucede en operaciones lógicas (más adelante veremos pruebas de condición y otras cosas similares) pero también se puede realizar explícitamente con una llamada a Boolean(value)
.
La regla de conversión:
Los valores que están intuitivamente "vacíos", como 0
, una cadena vacía, null
, undefined
y NaN
, se vuelven false
.
Otros valores se vuelven true
.
Por ejemplo:
alerta( booleano(1) ); // verdadero alerta( booleano(0) ); // FALSO alerta( booleano("hola")); // verdadero alerta( Booleano("") ); // FALSO
Tenga en cuenta: la cadena con cero "0"
es true
Algunos lenguajes (concretamente PHP) tratan "0"
como false
. Pero en JavaScript, una cadena no vacía siempre es true
.
alerta( booleano("0") ); // verdadero alerta( Booleano(" ") ); // espacios, también verdadero (cualquier cadena que no esté vacía es verdadera)
Las tres conversiones de tipos más utilizadas son cadena, número y booleano.
String Conversion
: ocurre cuando generamos algo. Se puede realizar con String(value)
. La conversión a cadena suele ser obvia para valores primitivos.
Numeric Conversion
: ocurre en operaciones matemáticas. Se puede realizar con Number(value)
.
La conversión sigue las reglas:
Valor | Se convierte… |
---|---|
undefined | NaN |
null | 0 |
true / false | 1 / 0 |
string | La cadena se lee "tal cual", los espacios en blanco (incluye espacios, tabulaciones t , nuevas líneas n etc.) de ambos lados se ignoran. Una cadena vacía se convierte en 0 . Un error da NaN . |
Boolean Conversion
: ocurre en operaciones lógicas. Se puede realizar con Boolean(value)
.
Sigue las reglas:
Valor | Se convierte… |
---|---|
0 , null , undefined , NaN , "" | false |
cualquier otro valor | true |
La mayoría de estas reglas son fáciles de entender y memorizar. Las excepciones notables en las que la gente suele cometer errores son:
undefined
es NaN
como un número, no 0
.
"0"
y cadenas de solo espacios como " "
son verdaderas como booleanas.
Los objetos no están cubiertos aquí. Volveremos a ellos más adelante en el capítulo Conversión de objetos a primitivos que está dedicado exclusivamente a objetos después de que aprendamos cosas más básicas sobre JavaScript.