JS 空数组与0、false相等

在对空数组与 0、false 进行相等操作符比较时,结果会返回 true,但在 if 语句中判断空数组则是 true,令人感觉造成 false 等于 true 的假象。

console.log([] == 0);
// > true

console.log([] == false);
// > true

if ([]) {
  console.log('true');
} else {
  console.log('false');
}
// > true

解析:

1.在进行相等操作符比较时,如果一个操作数是对象,另一个操作数不是,则先会隐式调用对象的 valueOf()、toString() 方法,再用得到的基本类型值与另一个操作数对比。空数组先后调用 valueOf()、toString() 方法得到空字符串,空字符串与 0、false 进行相等比较,结果返回 true。

2.在 if 语句中,空数组会被转换为 true。

此条目发表在JavaScript分类目录,贴了, , , , , 标签。将固定链接加入收藏夹。