为什么键入一个字符串 for ... in

Gas*_*hio 2 javascript for-loop

我正在for...in用 javascript编写一个简单的循环,想知道为什么key是字符串而不是数字?

为什么会这样,我可以将其更改为数字吗?

var array = ["a", "b", "c"];

for (var key in array) {
   console.log(typeof key); //string
   console.log(key + 1); //expected output : 01, 11, 21...
}
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 5

它是一个字符串,因为 JavaScript中的标准数组根本不是真正的数组¹,它们是具有数组条目属性的对象,并且对象属性名称(键)是字符串、符号或(很快)私有名称。

您不能在 a 中默认for-in将其设为数字​​,但您可以将其转换为数字,或使用其他形式,例如标准forforEach调用:

for (var key = 0; key < array.length; ++k) {
    // ...
}
// ..or
array.forEach((entry, key) => {
    // ...
});
Run Code Online (Sandbox Code Playgroud)

使用for-in循环遍历数组几乎总是一种反模式。请在此处查看我的答案,以全面了解循环数组的各种选项。


¹ 那是我贫血的小博客上的一篇文章。