题目描述:写出执行结果并解释原因
var a = [0];
if(a){
console.log(a==true);
}else{
console.log(a);
}
答案:
false
解析:
- 当 a 出现在 if 的条件中时,被转成布尔值,而 Boolean([0]) 为 true
- 所以就进行下一步判断 a==true,true被转为1 ,1 和 a 不相等
相等和不相等---先转换在比较。全等和不全等---仅比较而不转换
相等==和不相等!=这两个操作符都会先转换操作数(通常称为强制转型),然后再比较他们的相等性。
在转换不同的数据类型时,相等和不相等操作符遵循下列基本规则:
如果由一个操作数是布尔值,则在比较相等性之前先将其转换为数值---false转换为0,而true转换为1;
如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值;
如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较;
+