Javascript - Number

Javascript - Number

Primitivo e imutável!

O boolean é primitivo, imutável e é representado por true ou false

Temos o seguinte:

let isValid = new Boolean(true)
if (isValid) {
    console.log(true) 
} else console.log(false)

// Isso retornará true
// Mas e se alterarmos para new Boolean(false)??

let isValid = new Boolean(false)
if (isValid) {
    console.log(true) 
} else console.log(false)

// ISSO RETORNARÁ TRUE!!!! WHY??

Isso irá ocorrer por causa da coersão de tipos.

Coersão de tipo acontece quando um tipo de dado é utilizado em uma situação onde ele é e vai ser convertido de forma implícita ou explicita.

Abaixo temos um new Boolean(false) que por conta de estarmos invocando através do construtor ele deverá se comportar como um objeto boolean (implicitamente)

let isValid = new Boolean(false)
console.log(!!isValid)
true

Temos os únicos 6 exemplos em que isso irá retornar false (QUALQUER COISA FORA DISSO VAI SER TRUE!!!!)

!!0
false

!!NaN
false

!!""
false

!!false
false

!!undefined
false

!!null
false