JavaScript boolean类型与Boolean对象区别
JavaScript提供了一个布尔原始类型,它有true和false两个值
JavaScript提供了一个布尔原始类型,它有true
和false
两个值。你可以使用typeof
运算符变量的类型,保存布尔值的变量,返回值是boolean
。
除了原始类型boolean
之外,JavaScript还为您提供了全局Boolean()
函数,可以使用Boolean()
函数将另一个类型的值转换为布尔值。
Boolean
也是原始类型boolean
的封装对象。这意味着当您将其中一个true
或false
传递给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
。
变量falseObj
在if
语句中使用时。因为falseObj
是一个对象,JavaScript引擎将其强制转换为true
.。结果,if
块内的语句被执行。
建议您使用Boolean()
函数将不同类型的值转换为布尔值,但不要将原始布尔值使用Boolean
对象封装。
结论
在本教程中,您了解了JavaScript Boolean
对象和原始类型boolean
之间的区别。