空数组为 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)
调用对象(Array 是 JS 中 Object 的实例)将检查该对象是否存在,并返回 true/false。
你打电话时if (arr == false)
你比较values该对象和原始对象的false
价值。在内部,arr.toString()
被调用,返回一个空字符串""
.
这是因为toString
在数组返回时调用Array.join()
,空字符串是 JavaScript 中的假值之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)