空数组似乎同时等于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