var a=[0]; if(a){ console.log(a==true); } else{ console.log("wut"); }结果输出是什么?
一、首先看双等号前后有没有NaN,如果存在NaN,一律返回false。
二、再看双等号前后有没有布尔,有布尔就将布尔转换为数字。(false是0,true是1)
三、接着看双等号前后有没有字符串, 有三种情况:
1、对方是对象,对象使用toString()或者valueOf()进行转换;
2、对方是数字,字符串转数字;
3、对方是字符串,直接比较;
4、其他返回false
四、如果是数字,对方是对象,对象取valueOf()或者toString()进行比较, 其他一律返回false
'use strict'vararr = [0]; varbl = true; console.log("arr[0]:"+typeofarr[0]+" arr:"+typeofarr); console.log("arr:"+arr+" valueOf:"+arr.valueOf()+" toString:"+arr.toString());//数组在进行==比较时在valueOf不是数值的时候,调用toString进行转换 console.log("TYPEOF=>arr:"+typeof arr+" valueOf:"+typeof arr.valueOf()+" toString:"+typeof arr.toString()); console.log("FALSE=> arr:"+(arr == false)+" bl:"+ (bl === false)); console.log("TRUE=> arr:"+(arr == true)+" bl:"+ (bl === true));