myfreax

JavaScript boolean类型与Boolean对象区别

JavaScript提供了一个布尔原始类型,它有true和false两个值

2 min read
By myfreax
JavaScript boolean类型与Boolean对象区别
JavaScript boolean类型与Boolean对象区别

JavaScript提供了一个布尔原始类型,它有truefalse两个值。你可以使用typeof运算符变量的类型,保存布尔值的变量,返回值是boolean

除了原始类型boolean之外,JavaScript还为您提供了全局Boolean()函数,可以使用Boolean()函数将另一个类型的值转换为布尔值。

Boolean也是原始类型boolean的封装对象。这意味着当您将其中一个truefalse传递给Boolean构造函数时,它将创建一个Boolean对象。

下面的示例演示如何使用Boolean()函数将字符串转换为布尔值。因为字符串不为空,所以返回true

let a = Boolean('Hi'); 
console.log(a); // true
console.log(typeof(a)); // boolean

Boolean对象的原始值,请调用Boolean对象的valueOf()方法。valueOf()方法将会Boolean对象转换后的返回的值。

如果你调用Boolean对象的toString(),你会得到一个字符串值"true""false"

let b = new Boolean(false);
console.log(b.valueOf()); // false
console.log(b.toString()); // "false"

JavaScript boolean与Boolean区别

Boolean是Javascript的一个对象,因此您可以向其添加属性。boolean是原始类型,通常表示一个值,你不能向其添加属性。

其次,当你使用typeof运算符对布尔值获取类型时,原始布尔值返回boolean。布尔对象则返回object

第三,将instanceof运算符应用于Boolean对象时,它返回true。但是,如果您将 instanceof运算符应用于布尔值boolean,它会返回false

let completed = true;
let active = new Boolean(false);

active.primitiveValue = active.valueOf();
console.log(active.primitiveValue); // false

completed.name = 'primitive';
console.log(completed.name); // undefined

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

变量falseObjif语句中使用时。因为falseObj是一个对象,JavaScript引擎将其强制转换为true.。结果,if块内的语句被执行。

建议您使用Boolean()函数将不同类型的值转换为布尔值,但不要将原始布尔值使用Boolean对象封装。

结论

在本教程中,您了解了JavaScript Boolean对象和原始类型boolean之间的区别。