小编典典

空数组似乎同时等于true和false

javascript

空数组为true,但也等于false。

var arr = [];

console.log('Array:', arr);

if (arr) console.log("It's true!");

if (arr == false) console.log("It's false!");

if (arr && arr == false) console.log("...what??");

我猜这是由于相等运算符进行隐式转换所致。

谁能解释幕后发生的事情?


阅读 431

收藏
2020-04-25

共1个答案

小编典典

您正在这里测试不同的东西。

if (arr) 在对象上调用(数组是JS中Object的实例)将检查对象是否存在,并返回true / false。

当你打电话if (arr == false)你比较
这个对象和原始的false价值。在内部arr.toString()被调用,它返回一个空字符串""

这是因为toString在Array上调用会返回Array.join(),并且空字符串是JavaScript中的虚假值之一。

2020-04-25