В этом руководстве вы узнаете о Boolean объекте JavaScript и различиях между объектом Boolean и примитивным типом boolean.
Примитивный тип boolean
JavaScript предоставляет логический примитивный тип, который имеет два значения true и false. В следующем примере объявляются две переменные, которые содержат логические значения false и true :
let isPending = false; let isDone = true;
Когда вы применяете оператор typeof к переменной, которая содержит примитивное логическое значение, вы получаете boolean значение, как показано в следующем примере:
console.log(typeof(isPending)); // boolean console.log(typeof(isDone)); // boolean
Boolean объект JavaScript
В дополнение к boolean примитивному типу JavaScript также предоставляет вам глобальную функцию Boolean() с буквой B в верхнем регистре для приведения значения другого типа к boolean.
В следующем примере показано, как использовать функцию Boolean() для преобразования строки в логическое значение. Поскольку строка не пуста, она возвращает true.
let a = Boolean('Hi'); console.log(a); // true console.log(typeof(a)); // booleanBoolean также является объектом-оболочкой boolean примитивного типа. Это означает, что когда вы передаете Boolean конструктору значение true или false, он создает Boolean объект. Например:
let b = new Boolean(false);
Чтобы вернуть примитивное значение, вы вызываете метод valueOf() Boolean объекта следующим образом:
console.log(b.valueOf()); // false
Однако, если вы вызываете метод toString() Boolean объекта, вы получаете строковое значение "true" или "false". Например:
console.log(b.toString()); // "false"
Различия boolean и Boolean в JavaScript
Рассмотрим этот пример:
let completed = true; let active = new Boolean(false);
Во-первых, active — это объект, поэтому вы можете добавить к нему свойство:
active.primitiveValue = active.valueOf(); console.log(active.primitiveValue); // false
Однако вы не можете сделать это с примитивной логической переменной, такой как completed переменная:
completed.name = 'primitive'; console.log(completed.name); // undefined
Во-вторых, typeof логического объекта возвращает object, тогда как typeof примитивного логического значения возвращает boolean.
console.log(typeof completed); // boolean console.log(typeof active); // object
В-третьих, при применении оператора instanceof к Boolean объекту он возвращает true. Однако он возвращает false, если вы применяете оператор instanceof к логическому значению.
console.log(completed instanceof Boolean); // false console.log(active instanceof Boolean); // true
Хорошей практикой является никогда не использовать Boolean объект, потому что это создаст много путаницы, особенно при использовании в выражении. Например:
let falseObj = new Boolean(false); if(falseObj) { console.log('weird part of the Boolean object'); }Как работает скрипт.
- Во-первых, создайте
falseObjкак оболочкуBooleanобъекта для значенияfalse. - Во-вторых, используйте
falseObjв оператореif. Потому чтоfalseObj— это объект, и движок JavaScript принуждает его к логическому значениюtrue. В результате выполняется оператор внутри блокаif.
В следующей таблице приведены различия между Booleanи boolean в JavaScript:
| Оператор | boolean | Boolean |
|---|---|---|
typeof | логический | объект |
instanceof Boolean | false | true |
Рекомендуется использовать функцию Boolean() для преобразования значения другого типа в тип Boolean, но никогда не следует использовать Boolean в качестве объекта-оболочки примитивного логического значения.
В этом руководстве вы узнали о Boolean объекте JavaScript и различиях между Boolean объектом и boolean примитивным типом.
