javascript - 使用 'in' 关键字检查 0 总是返回 true?

标签 javascript

拿下面这段代码:

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/

相关文章:

javascript - Jquery Click 事件在回发后不起作用

javascript - 为什么相等性检查不适用于数组

javascript - 具有嵌套数据的 Material UI 数据网格

javascript - 将 JSON 数据中的 "\"替换为 null

javascript - 根据变量的值对变量进行排序,然后打印它们

javascript - Flex 属性在 Safari 浏览器中不起作用

javascript - 如何根据单击的复选框显示/隐藏特定图像(单击 cbox3 应打开 tinypic3)

javascript - 在 Backbone 应用程序中使用时焦点+上下文图中的解析错误

javascript - 将 FontAwesome 图标添加到 D3 图形

javascript - 未捕获的 TypeError : $(. ..).jqGrid 不是 subGridRowExpanded 上的函数