今天在复习js基本数据类型的时候发现了一个以前忽略的知识点,那就是Boolean类型和布尔值的区别。
首先,要明确一下,Boolean类型是与布尔值对应的引用类。
举例来看,var object = new Boolean(false);
var value = true;
我想这样举例来看大家就明白我要表达的意思了。但这还不是我要表达的意思,请在看个例子:
alert(object && value);可能很多人多给出的答案会是false 但正确的答案应该是true。这就是我想说的第一点,object是个对象,它在做与操作的时候会强制转换为布尔类型,而布尔表达式的所有对象都会转换成true,因此true && true 返回的是true。他们一个是引用类型,一个是基本类型。
其次,如果以上的内容你明白了,那么接下来的结果也不会出乎你的意料的:
alert(typeof object); //object
alert(typeof value); //boolean
alert(object isinstanceof Boolean); //true
alert(value isinstanceof Boolean); //false
这就是基本类型的布尔值和Boolean对象的区别。
但是不建议使用Boolean对象。