繁体   English   中英

为什么空数组上的indexOf不返回-1?

[英]Why does indexOf on an empty array does not return -1?

我试图检查数组是否包含给定值:

var arr = [];

if (arr.indexOf(2)) {
    console.log('yes');
}

小提琴

为什么始终满足if条件,尽管arr不包含值2 不应该返回-1 ,因此不记录任何内容?

你的病情应该是:

if (arr.indexOf(2) >= 0)

因为在JavaScript中,当合并为布尔值时0false ,而任何其他数字都被认为是true

因此...... -1合并为true

 alert(!!-1) 

如果您在浏览器的控制台中运行此代码,您将看到它确实返回-1。 但是,在JavaScript if语句中,-1是真实的,因此警报将执行。 正如这个优秀的JavaScript相等表中所详述的那样,只有很少的值会在if语句中评估为false: false0""nullundefinedNaN

它确实返回-1但Javascript中的-1被认为是“truthy”。

试试这个,看它确实返回-1:

var i = arr.indexOf(2);
console.log(i);

您需要在条件中明确地将非相等性与-1进行比较。

这是你的jsfiddle的更新版本:
http://jsfiddle.net/bmj8y8bj/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM