Conversión de tipos en JavaScript (coerción implicita y explícita)

Author
Por Darío Rivera
Publicado el en Javascript

La mayor parte del tiempo JavaScript realiza conversiones de tipo sin casi darnos cuenta si quiera de ello. El día de hoy, veremos estas conversiones que pasan casi sin nuestro consentimiento y otros tipos de conversiones sobre las cuáles si tenemos control.

Conversión a Strings

Esta conversión ocurre cada vez que se requiere un string en algún punto del script. Dado que javascript se encarga de realizar esta conversión suele llamarse coerción implícita (implicit coercion). Un ejemplo de esta conversión ocurre cuando intentamos sumar un string y un número.

let a = 5;
let b = '6';
let sum = a + b;  // '56'
typeof sum;       // string

También es posible convertir explícitamente un valor a string utilizando el objeto de envoltura String. Este tipo de conversión utilizando el wrapper object suele ser llamada coerción explícita (explicit coercion).

let b = true;
value = String(b);  // now value is a string "true"
typeof value;       // string

Conversion Numérica

La conversión numérica ocurre cada vez que se requiere un número en algún punto del script. Un ejemplo de esta conversión ocurre cuando se operan matemáticamente dos strings numéricos. Lo curioso, es que ocurre con todos los operadores menos con el signo + (ver conversión a strings).

let a = '3';
let b = '4';
let times = a * b;  // 12
typeof times;       // number

Para otros tipos de datos, la conversión resulta ser similar a cómo se convertía ese tipo con el wrapper object.

undefined + 6;   // NaN, ya que undefined es NaN
null + 25;       // 25, ya que null=0
true + true;     // 2, ya que true=1

También es posible convertir explícitamente un valor a número utilizando el objeto de envoltura Number.

let c = '4';
let num = Number(c);  // 4
typeof num;           // number

Conversion a Boolean

La conversión a boolean ocurre cada vez que se requiere un booleano en algún punto del script. Un ejemplo de esta conversión puede ocurrir en las sentencias de desición.

let name = 'John Doe';
if (name) {
    console.info('Hello ' + name);
}

También es posible convertir explícitamente un valor a booleano utilizando el objeto de envoltura Boolean.

let b = 1;
let c = Boolean(b);  // true
typeof c;            // boolean

Si te ha sonado un poco raro esto de los objetos de envoltura te invito a revisar el post Objetos de envoltura en Javascript en donde podrás obtener una apreciación más completa del comportamiento de estos objetos. Además podrás observar un poco más a detalle la conversión de valores comunes en javascript.


Acerca de Darío Rivera

Author

Application Architect at Elentra Corp . Quality developer and passionate learner with 10+ years of experience in web technologies. Creator of EasyHttp , an standard way to consume HTTP Clients.

LinkedIn Twitter Instagram

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.