【发布时间】:2016-03-11 20:52:43
【问题描述】:
我是 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是 JavaScript 中的一个原语,所以它是它自己的东西,你所拥有的是一个空索引,在你分配它之前它不存在。因此,当indexOf()在数组中查找undefined时,它实际上是在寻找该值,如果它返回数组中每个未填充索引的值,它将永远持续 -
如上所述,
undefined有点用词不当,它实际上是一个特定的原始值,所以它实际上是定义的,而不是字面上的未定义,它当你有一个未设置索引的数组时,你会得到什么。 -
感谢您的回复!!现在一切都清楚了!
标签: javascript arrays indexof