JavaScript for loop:为什么在这种情况下索引字符串的类型

JavaScript for loop: why is the type of index string in this case?

本文关键字:索引 字符串 类型 这种情况下 for loop 为什么 JavaScript      更新时间:2023-09-26
var string = "The quick brown fox jumps over the lazy dog";
var words = string.split(" ");
for (var i in words) {
    console.log(typeof i) // "string"
    console.log(i) // 0,1,2,3...n
}

我刚刚发现在这种情况下,for 循环中的 i 类型是一个字符串。为什么?

属性名称是字符串,您使用的for (var i in words)循环迭代words对象的属性名称(恰好包括数组索引(。 不应使用 for (var i in words) 循环访问数组的元素,因为它迭代属性,而不仅仅是数组元素。

您可以使用以下任一形式来迭代数组的元素:

for (var i = 0; i < words.length; i++) {
   item = words[i];
}

或者,在现代浏览器中,您可以使用:

words.forEach(function(value, index) {
});