1.代码输出题:
var x = [0];
if([0]){
 console.log(x==true);
}else{
 console.log("false");;
}
考点:隐式转换
解析:此题涉及两次隐式转换,第一次是在if中默认使用Boolean转换,第二次是在==时发生了双
等的隐式转换。首先明确Boolean的转换规则:①字符串时除空字符串之外其余都转换为true②数字
类型时除0其余都转换为true③对象时除了null其余都转换为true④undefined转换为false。故程序
会进入第一个if条件中,然后发生了==的隐式转换。转换规则如下:①如果一个运算数是 Boolean 
值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。②如果一个运算数是对
象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。故按照如上规则会先true
转换为1,然后会将[0]转换成0,故两者不相等返回false

静书
603 声望55 粉丝

简书