<分区>
我不确定这是否是正常行为,但是运行这个:
for (var i in [1, 2, 3]) {
console.log(i + 1);
}
结果:
// 01
// 11
// 21
谁能解释一下,为什么是var i
在这种情况下被视为字符串而不是如果我这样做 for (var i = 0; i < [1, 2, 3].length; i++)
?
<分区>
我不确定这是否是正常行为,但是运行这个:
for (var i in [1, 2, 3]) {
console.log(i + 1);
}
结果:
// 01
// 11
// 21
谁能解释一下,为什么是var i
在这种情况下被视为字符串而不是如果我这样做 for (var i = 0; i < [1, 2, 3].length; i++)
?
最佳答案
这很可能是因为在这种 for 循环样式 (for..in) 中,它将 i
视为键,并且由于对象中的键通常是字符串(是的,数组是一种类型javascript 中的对象),它将其视为字符串。
parseInt(i)
在这种情况下工作,但为了良好的编程习惯,您可能希望使用类似于此的 for
循环:
var array = [1, 2, 3];
for (var i = array.length - 1; i >= 0; i--) {
// do work with each array element here
}
关于javascript - for循环中的变量是一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38985421/
相关文章:
javascript - Bootstrap 悬停水平子导航
javascript - AngularJS:如何从其他 JSON 中搜索并替换/添加 JSON 对象中的键?
javascript - 在没有数据源的情况下将项目添加到 Kendo MultiSelect
javascript - JQuery 模板 : How to preserve backslashes in content?
javascript - 从 XYZ 解码并编码为 UTF8
javascript - 为什么 Javascript parseFloat 在 for 循环中附加额外的值?