javascript - 为什么数组中数字元素的类型在javascript中被评估为字符串

标签 javascript

<分区>

例如

var a = [1, 2, 3];
for (var i in a) {
    console.log(typeof i);
}

输出

string
string
string

我是一名 Python 程序员,我发现它非常不直观。为什么不将元素评估为数字?

最佳答案

您正在遍历对象的 keys。这意味着您实际测试的键是“0”、“1”、“2”。

你可以在这里看到,如果你也控制 i。此外,如果您控制位于数组中该索引处的值并对其进行测试,您将看到它是一个数字:

var a = [1, 2, 3];
for (var i in a) {
  console.log(i, typeof i, a[i], typeof a[i]);
}

在 ES5 中,一个新特性被添加到数组中,循环遍历它们的值(和索引):Array#forEach:

var a = [1, 2, 3];
a.forEach(function(v) {
  console.log(v, typeof v);
});

在 ES2015+ 中,添加了 for-of,它将使用 for 样式循环遍历值:

// ES2015+ only!!
let a = [1, 2, 3];
for (let v of a) {
  console.log(v, typeof v);
}

关于javascript - 为什么数组中数字元素的类型在javascript中被评估为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38529615/

相关文章:

Javascript for 循环与输入值进行比较

javascript - Cookie 为空,但在浏览器中有一个值

javascript - 引用错误 : function is not defined at HTMLButtonElement. onclick

javascript - 在 jQuery 中如何触发 mootools 中添加的元素事件?

javascript - css中带空格和不带空格的类有什么区别,多个不带空格的类有什么用

javascript - 如何更新分页的 jQuery DataTables 数据并显示它

javascript - JS原型(prototype): Inheritance

javascript - 自动登录或自动单击按钮

javascript - 传递 null 值时 Heroku 应用程序崩溃

javascript - Meteor TypeError : braintree. 设置不是一个函数