<script>
//var falseObject = new Boolean(false);
var falseObject = new Boolean(true);
alert(falseObject);
var result = falseObject&&true;
alert(result);//true
var falseValue = false;
result = falseValue&&true;
alert(result);
</script>
当使用Boolean类型的构造函数传入值,第一个alert会根据你传递的参数来反应,为什么
无论falseObject是什么值,第二个alert()都为true,顺便讲讲第二个代码
可以用typeof查看一下其数据类型:alert(typeof falseObject); //object
不过在这行代码中,计算的是falseObject(引用类型_存储的是指向其值false的地址),而不是它的值false.
在Boolean表达式中,所有对象都会转换为true所以,在进行Boolean运算中,falseObject的值为true .true && true,结果当然也是为true.
例子:
var b = new Boolean(false);
b 是 Boolean 对象实例,它的值是 false。但要注意的是,如果判断条件“b && true”,结果却为“true”,原因是此处是用对象 b 作为条件的,而不是 b 的值,由于在条件表达式中任何对象都自动转换为“true”,所以产生了不易理解的结果。
在实际应用中,很少使用 Boolean 对象,通常使用的是 Boolean 原始值,这样可避免上面问题的发生。比如:
var b = false;
本例的 b 是一个 Boolean 类型的变量,它是原始值,不是 Boolean 对象。
不论是 Boolean 对象还是 Boolean 原始类型,都可以引用 Boolean 对象的属性和方法。
谢谢,昨晚看书看到那里就迷糊了,看你讲解,感觉一下子明白了