考察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

最后修改日期: 2024年 4月 1日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。