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
falseObjcomo una instancia de objetoBooleanpara el valorfalse. - En segundo lugar, use
falseObjen la instrucciónif. PorquefalseObjes 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.
