Boolean基本类型和引用类型
Boolean基本类型和引用类型
先给大家看下代码:
var x = true,
y = false,
xObject = new Boolean(x), //true
yObject = new Boolean(y), //false
resXObject = new Boolean(xObject), //true
resYObject = new Boolean(yObject); //true
alert它们分别输出什么呢?为什么输出这个?
一、Boolean基本类型
1.它是使用得非常频繁的一种类型,只有两个值true和false。
2.转化Boolean值:
var booleanValue = Boolean(value);
如果省略参数,或者设置为 0、-0、null、""、false、undefined 或 NaN,则value转化为 false。否则转化为 true(即使参数是字符串 "false")。
二、Boolean引用类型
1.它可以像下面这样调用Boolean构造函数并传入true或false值:
var booleanObject = new Boolean(true);
如果省略参数,或者设置为 0、-0、null、""、false、undefined 或 NaN,则该对象设置为 false。否则设置为 true(即使参数是字符串 "false")。
2.valueOf方法:
返回基本类型值true或false。
3.toString方法:
返回字符串‘true’或‘false’。
三、二者之间的区别
1.typeof操作符对Boolean基本类型返回‘boolean’,而对引用类型返回‘object’。
alert(typeof x); //boolean
alert(typeof xObject); //object
2.instanceof操作符测试Boolean对象,对Boolean基本类型返回false,而对引用类型返回true。
alert(x instanceof Boolean); //false
alert(xObject instanceof Boolean); //true
四、总结
1.根据new Boolean()的参数规则
xObject = new Boolean(x);由于参数x值为true,故生成xObject是一个值为true的Boolean对象;
yObject = new Boolean(y);由于参数y值为false,故生成yObject是一个值为false的Boolean对象;
2.根据new Boolean()的参数规则以及Boolean基本类型的转化规则
resXObject = new Boolean(xObject);由于xObject为对象,根据Boolean基本类型的转化规则被转化为true,再根据new Boolean()的参数规则,故生成resXObject是一个值为true的Boolean对象;
resYObject = new Boolean(yObject);由于yObject为对象,根据Boolean基本类型的转化规则被转化为true,再根据new Boolean()的参数规则,故生成resYObject是一个值为true的Boolean对象;
不过在此建议大家尽量不要使用Boolean对象,以免不小心造成错误。
五、问题
var a = new Boolean(false);
if (a) {
alert(a);
}
会否执行alert?如果会,alert出什么?
var a = new Boolean(false);
if (a) {
alert(!a);
}
这样又如何?

浙公网安备 33010602011771号