javascript - Javascript 'for-in' 函数是否只返回一个索引?

标签 javascript

这是我尝试运行的方法:

function SayHello() {
    cars = new Array();
    cars[0] = "Toyota";
    cars[1] = "Mitsubishi";
    cars[2] = "Honda";

    for (car in cars) {
        alert(car);
    }
}

返回:

0
1
2

当我将代码更改为:

function SayHello() {
    cars = new Array();
    cars[0] = "Toyota";
    cars[1] = "Mitsubishi";
    cars[2] = "Honda";

    for (car in cars) {
        alert(cars[car]);
    }
}

它正确地返回了名称。

我的问题是,for-in 循环是否只是以有序的方式返回一个索引?谢谢。

最佳答案

是的,迭代器的值是属性的名称。然而,使用它来遍历数组是非常不受欢迎的。例如,考虑一下:

x = ['a', 'b', 'c'];

x.foo = 'bar';

for (i in x) alert(i);  // 0, 1, 2, foo

它用于遍历对象的成员:

x = { a : 'apple', b : 'banana', c : 'carrot' };

for (i in x) {
    // and it's best to check that the property actually exists
    // on this object, not just on one of its prototypal ancestors:
    if (x.hasOwnProperty(i)) {
        alert(i);  // 'a', 'b', 'c'
    }
}

有关原因的更多信息 YUI Blog

关于javascript - Javascript 'for-in' 函数是否只返回一个索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4534488/

相关文章:

javascript - 让 HTML5 canvas 中的重力作用两次

javascript - 图片上传按钮div

c# - 当客户端脚本显示时正确调整 ModalPopupExtender 的大小

javascript - 到达元素时隐藏 div 传递时显示

javascript - String.prototype.tokenize = 标记化;

javascript - 从 C 转换为 Javascript : Sudoku solution generator

javascript - 如何使用 jQuery 通过一个链接展开多个部分?

javascript - 基本的javascript Accordion

javascript - 如何在 css 网格中显示一些元素,直到按下更多按钮?

javascript - Material Design Lite 插件正则表达式 javascript