我是JavaScript的新手,有一件事情困扰着我。我有一个非常简单的代码:
var a = [];
a[1] = 1;
i = typeof(a[0]);
index = a.indexOf(undefined);
len = a.length;
console.log(a);
console.log("\n" + len);
console.log("\n" + i);
console.log("\n" + index);
我的问题是:为什么indexOf返回-1而不是0?我知道这个方法使用===进行比较,但我将undefined关键字用作参数。如果我将方法参数更改为"undefined",它也无法工作(但对我来说这很明显)。有人能解释一下这个问题,并告诉我在数组中找到undefined值的最简单方法是什么吗?
undefined
是 JavaScript 中的原始类型,因此它是独立的。当你有一个不存在的空索引时,直到你给它分配了某些东西,它才存在。因此,当indexOf()
在数组中查找undefined
时,实际上是在寻找该值。如果它为数组中每个未填充的索引返回一个值,那么它将永远继续下去。 - JmJundefined
有点不准确,实际上它是一个特定的原始值,因此它实际上是已定义的,而不是字面上的未定义,当您拥有具有未设置索引的数组时就会出现这种情况。 - adeneo