Resumo : neste tutorial você aprenderá sobre o Boolean
objeto JavaScript e as diferenças entre o Boolean
objeto e o boolean
tipo primitivo.
Tipo primitivo booleano JavaScript
JavaScript fornece um tipo primitivo booleano que possui dois valores de true
e false
. O exemplo a seguir declara duas variáveis que contêm valores booleanos de false
e true
:
let isPending = false;
let isDone = true;
Linguagem de código: JavaScript ( javascript )
Ao aplicar o typeof
operador a uma variável que contém um valor booleano primitivo, você obtém o boolean
seguinte exemplo:
console.log(typeof(isPending)); // boolean
console.log(typeof(isDone)); // boolean
Linguagem de código: JavaScript ( javascript )
Objeto Booleano JavaScript
Além do boolean
tipo primitivo, o JavaScript também fornece a Boolean()
função global, com a letra B
maiúscula, para converter um valor de outro tipo paraboolean.
O exemplo a seguir mostra como usar a Boolean()
função para converter uma string em um valor booleano. Como a string não está vazia, ela retorna true
.
let a = Boolean('Hi');
console.log(a); // true
console.log(typeof(a)); // boolean
Linguagem de código: JavaScript ( javascript )
O Boolean
também é um objeto wrapper do boolean
tipo primitivo. Isso significa que quando você passa true
ou false
para o Boolean
construtor, ele criará um Boolean
objeto. Por exemplo:
let b = new Boolean(false);
Linguagem de código: JavaScript ( javascript )
Para recuperar o valor primitivo, você chama o valueOf()
método do Boolean
objeto da seguinte maneira:
console.log(b.valueOf()); // false
Linguagem de código: JavaScript ( javascript )
No entanto, se você chamar o toString()
método de um Boolean
objeto, obterá um valor de string "true"
ou "false"
. Por exemplo:
console.log(b.toString()); // "false"
Linguagem de código: JavaScript ( javascript )
JavaScript booleano vs. booleano
Considere este exemplo:
let completed = true;
let active = new Boolean(false);
Linguagem de código: JavaScript ( javascript )
Primeiro, active
é um objeto para que você possa adicionar uma propriedade a ele:
active.primitiveValue = active.valueOf();
console.log(active.primitiveValue); // false
Linguagem de código: JavaScript ( javascript )
No entanto, você não pode fazer isso com a variável booleana primitiva como a completed
variável:
completed.name = 'primitive';
console.log(completed.name); // undefined
Linguagem de código: JavaScript ( javascript )
Em segundo lugar, o typeof
de um objeto booleano retorna object
, enquanto o typeof
de um valor booleano primitivo retorna boolean
.
console.log(typeof completed); // boolean
console.log(typeof active); // object
Linguagem de código: JavaScript ( javascript )
Terceiro, ao aplicar o instanceof
operador a um Boolean
objeto, ele retorna true
. No entanto, ele retorna false
se você aplicar o instanceof
operador a um valor booleano.
console.log(completed instanceof Boolean); // false
console.log(active instanceof Boolean); // true
Linguagem de código: JavaScript ( javascript )
É uma boa prática nunca usar o Boolean
objeto porque isso criará muita confusão, especialmente quando usado em uma expressão. Por exemplo:
let falseObj = new Boolean(false);
if (falseObj) {
console.log('weird part of the Boolean object');
}
Linguagem de código: JavaScript ( javascript )
Como funciona o roteiro.
- Primeiro, crie
falseObj
umBoolean
wrapper de objeto para ofalse
valor. - Em segundo lugar, use
falseObj
naif
declaração. PorquefalseObj
é um objeto e o mecanismo JavaScript o força a um valor booleano detrue
. Como resultado, a instrução dentro doif
bloco é executada.
A tabela a seguir resume as diferenças entre JavaScript Boolean
e boolean
:
Operador | boleano | boleano |
---|---|---|
typeof |
boleano | objeto |
instanceof boleano |
falso | verdadeiro |
É recomendado que você use a Boolean()
função para converter um valor de um tipo diferente em um tipo booleano, mas você nunca deve usar o Boolean
como um objeto wrapper de um valor booleano primitivo.
Neste tutorial, você aprendeu sobre o Boolean
objeto JavaScript e as diferenças entre o Boolean
objeto e boolean
o tipo primitivo.