考察js的变量隐式转换
var a = [0]; if(a){ // 除空字符串 null 0 undefined NaN 之外的类型都会转换为true console.log(a == true) }else{ console.log(a) }
在代码的第三行首先会触发规则3
1、执行a.valueOf()
之后返回的结果没有变化为[0]
;
2、继续执行3.2规则,执行toString()方法数组的toString()方法,内部实现为数组join()方法;
3、实际上是 '0' == true
的比较,两边都会转换成数字,字符串'0'转换成0,true转换成1;
4、0 == 1 ---> false
留言