View on GitHub

Capacitacao-CEOS-2-Javascript

Conversão entre tipos

Em Javascript, podemos realizar conversões entre os tipos dos valores.

É possível realizar conversões entre os tipos String, Number e Boolean.

Conversões entre String e Number.

let a = String(5); // '5'
let b = Number('5'); // 5
let c = Number('3.145'); // 3.145
let d = String(0); // '0'

E se a gente tentar converter uma string que não é um número pra Number ou uma string vazia?

let notANumber = Number('batata'); // NaN
let emptyString = Number(''); // 0

Caso a string não seja um número, a String será convertida para NaN, que significa not a number. No caso de uma string vazia como '', a string será convertida para 0.

Também podemos converter Number e String para Boolean.

let a = Boolean('bola'); // true
let b = Boolean(321); // true
let c = Boolean(0); // false
let d = Boolean(''); // false

Geralmente, qualquer número diferente de 0 ou string não vazia, será considerada true. Strings vazias '' ou o número 0 serão convertidas para false.

Os casos acima são conversões explicitas, porém, existem alguns casos onde o próprio javascript realiza conversões para nos, de forma implicita.

O caso mais comum desse tipo de conversão implicita é com o operador ==.

Lembra do operador de comparação === e !==? Bem, esses operadores verificam tanto os valores quanto os tipos. Porém, existem também os operadores == e != que realizam conversões implicitamente pra nos.

Isso fica claro na prática:

42 == '42'; // true
42 === '42'; // false

5 != '5'; // false
5 !== '5'; // true - tipos diferentes

Perceba que na comparação 42 == '42', embora '42' seja uma string, a comparação retorna true! Isso acontece, porque o operador == realiza uma conversão implicita nos tipos para deixar ambos os valores com o mesmo tipo! O mesmo vale para o operador !=, ele também realiza uma conversão para deixar ambos os valores com o mesmo tipo.

Existem alguns outros casos, como na adição:

5 + '5'; // '55'

Nesse caso, o número 5 é convertido para String, e então as duas strings são “grudadas” uma na outra, resultando na string '55'.