为什么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中,属性名称是字符串,数组只是具有一系列看起来像数字的属性的对象。
上一篇: Why does javascript turn array indexes into strings when iterating?
下一篇: Can you set the order in which files appear on "git" commands?