拿下面这段代码:
var testArr = [1, 2, 3, 4, 5];
function check(num) {
if (num !== undefined) {
if (num in testArr) {
alert("in");
} else {
alert("not in");
}
}
}
使用 check()
函数,我尝试检查给定参数是否是 testArr
数组的一部分。
一般来说,该函数工作正常,只有在检查 0
时才满足条件,尽管 0
不是数组的一部分。自己看看:Fiddle
为什么会这样?
我能想到的一个可能的解决方案是 0
在某些情况下被评估为 false
(==
vs == =
), 但是当传递 false
作为参数时,条件不满足,这对我来说没有任何意义——我很困惑。
最佳答案
在这种情况下,您返回数组中存在索引但不存在值。请参阅此文档 in operator .我认为您必须使用 indexOf 函数验证数组的值。
关于javascript - 使用 'in' 关键字检查 0 总是返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29042073/