当我使用indexOf时,我无法确定-1在javascript中是真还是假。
let a = 'abc'.indexOf('abc');
let b = 'def'.indexOf('abc');
console.log(a); // 0
console.log(b); // -1
console.log(!a); // true
console.log(!b); // false
为什么最后两行给出 true/false?
据我了解,只有 == 允许类型转换,因为 (=== 是严格的)
(!a) 和 (!b) 是否在内部某个地方使用了 (==) ?
From MDN:
在 JavaScript 中,真值是在布尔上下文中计算时转换为 true 的值。所有值都是真值,除非它们被定义为假值(即除了 false、0、“”、null、undefined 和 NaN)。(强调我的)
这意味着-1
被认为是“真实的”。你不应该检查“真实性”directly关于返回的值indexOf
反正。-1
has a specific意思是您要查找的元素在数组中不存在。因此,明确测试更有意义-1
using ===
。对于任何阅读代码的人来说,其意图也比强制返回值要清楚得多indexOf
并据此做出决定。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)