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

空数组为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??");

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

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

回答:

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

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

当你打电话if (arr == false)你比较

这个对象和原始的false价值。在内部arr.toString()被调用,它返回一个空字符串""

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

以上是 空数组似乎同时等于true和false 的全部内容, 来源链接: utcz.com/qa/400762.html

回到顶部