0

这是我的代码

function Person (name, age) {
this.name = name;
this.age = age;
}

var family = new Array();
family[0] = new Person("alice", 40);
family[1] = new Person("bob", 42);
family[2] = new Person("michelle", 8);
family[3] = new Person("timmy", 6);

for (i =0; i<= family.length; i++) {
    console.log (family[i].name);
}

这会产生一个错误:TypeError: Cannot read property 'name' of undefined

谁能从这里指出我正确的方向?

4

5 回答 5

3

你迭代一个太远了。

for (var i = 0; i < family.length; i++)

JavaScript 数组从零开始,最后一个非空单元格位于length - 1. 因此,当您的索引等于长度时,您必须停止迭代,而不是当它大于长度时。

于 2013-08-22T14:54:03.877 回答
2

您应该将测试条件更改为i < family.length,您已经越界了。

于 2013-08-22T14:54:04.123 回答
1

怎么样i < family.length

于 2013-08-22T14:54:36.123 回答
1

将 <= 更改为 <。您超出了数组限制。

于 2013-08-22T14:55:45.453 回答
0

它工作得很好。

for (i =0; i<= family.length; i++)

演示:http: //jsfiddle.net/285Th/1/

于 2013-08-22T15:29:31.347 回答