Objetos y variables booleanas de JavaScript

Resumen: en este tutorial, aprenderás sobre el objeto boolean
de JavaScript y las diferencias entre el objeto boolean
y el tipo primitivo boolean
.
Tipo primitivo boolean de JavaScript
JavaScript proporciona un tipo primitivo booleano
que tiene dos valores true
y false
. El siguiente ejemplo declara dos variables que contienen valores boolean
de false
y true
:
let isPending = false;
let isDone = true;
Cuando aplicas el operador typeof
a una variable que contiene un valor boolean primitivo, obtiene el boolean
como el siguiente ejemplo:
console.log(typeof(isPending)); // boolean
console.log(typeof(isDone)); // boolean
Objeto boolean JavaScript
Además del tipo primitivo boolean
, JavaScript también le proporciona la función global Boolean()
, con la letra B
en mayúscula, para convertir un valor de otro tipo en boolean
.
El siguiente ejemplo muestra cómo usar la función Boolean()
para convertir una cadena en un valor boolean. Como la cadena no está vacía, devuelve true
.
let a = Boolean('Hi');
console.log(a); // true
console.log(typeof(a)); // boolean
El Boolean
es también un objeto contenedor del tipo primitivo boolean
. Significa que cuando pasas true
o false
al constructor Boolean
, creará un objeto Boolean
. Por ejemplo:
let b = new Boolean(false);
Para recuperar el valor primitivo, llama al método valueOf()
del objeto Boolean
de la siguiente manera:
console.log(b.valueOf()); // false
Sin embargo, si llamas al método toString()
de un objeto Boolean
, obtienes un valor de cadena "true
" o "false
". Por ejemplo:
console.log(b.toString()); // "false"
boolean vs. Boolean
Considera este ejemplo:
let completed = true;
let active = new Boolean(false);
Primero, active
es un objeto, por lo que puedes agregarle una propiedad:
active.primitiveValue = active.valueOf();
console.log(active.primitiveValue); // false
Sin embargo, no puedes hacerlo con la variable booleana primitiva como la variable completed
:
completed.name = 'primitive';
console.log(completed.name); // undefined
En segundo lugar, el typeof
de objeto booleano devuelve object
, mientras que el typeof
de valor booleano primitivo devuelve boolean
.
console.log(typeof completed); // boolean
console.log(typeof active); // object
En tercer lugar, al aplicar el operador instanceof
a un objeto Boolean
, devuelve true
. Sin embargo, devuelve false
si aplicas el operador instanceof
a un valor boolean
.
console.log(completed instanceof Boolean); // false
console.log(active instanceof Boolean); // true
Es una buena práctica nunca usar el objeto boolean porque creará muchas confusiones, especialmente cuando se usa en una expresión. Por ejemplo:
let falseObj = new Boolean(false);
if (falseObj) {
console.log('weird part of the Boolean object');
}
Cómo funciona el código.
- Primero, cree
falseObj
como una instancia de objetoBoolean
para el valorfalse
. - En segundo lugar, use
falseObj
en la instrucciónif
. PorquefalseObj
es un objeto, y el motor de JavaScript lo fuerza a un valor booleano de verdadero. Como resultado, se ejecuta la declaración dentro del bloqueif
.
La siguiente tabla resume las diferencias entre JavaScript Boolean
y boolean
:
Operador | boolean | Boolean |
---|---|---|
typeof |
boolean |
object |
instanceof Boolean |
false |
true |
Se recomienda que uses la función Boolean()
para convertir un valor de un tipo diferente a un tipo booleano, pero nunca debe usar el boolean
como un objeto contenedor de un valor booleano primitivo.
En este tutorial, has aprendido sobre el objeto Boolean
de JavaScript y las diferencias entre el objeto Boolean
y el tipo primitivo boolean
.