为什么JavaScript在迭代时将数组索引转换为字符串?

这个Javascript逻辑困惑我。 我正在创建一个数组并将其第一个元素设置为一个数字。 当我使用“for”循环来介绍它时,Javascript会将数组键转换为一个字符串。 为什么? 我希望它保持一个数字。

stuff = [];
stuff[0] = 3;

for(var x in stuff) {
    alert(typeof x);
}

这是因为你使用for...in循环数组for...in其中通常用于循环对象的属性。 javascript引擎可能会转换为字符串,因为字符串类型适用于对象属性的名称。

尝试这种更传统的方法:

stuff = [];
stuff[0] = 3;

for(var i=0; i<stuff.length; i++) {
    var x = stuff[i];
    alert(typeof x);
}

for..in不用于迭代数组。 改为使用C风格的循环。

参考:MDC


Javascript中的for .. in循环遍历对象的属性。 在Javascript中,属性名称是字符串,数组只是具有一系列看起来像数字的属性的对象。

链接地址: http://www.djcxy.com/p/24521.html

上一篇: Why does javascript turn array indexes into strings when iterating?

下一篇: Can you set the order in which files appear on "git" commands?