您好我一直在尝试使用codeacademy.com学习Javascript,并且我已经完成了一个练习,这个练习似乎没有任何意义,为什么我写的练习。这是我的代码:
(function(){
var bob = {
firstName: "Bob",
lastName: "Jones",
phoneNumber: "(650) 777 - 7777",
email: "bob.jones@example.com"
};
var mary = {
firstName: "Mary",
lastName: "Johnson",
phoneNumber: "(650) 888 - 8888",
email: "mary.johnson@example.com"
};
var contacts = [bob, mary];
var printPerson = function(person){
console.log(person.firstName + " " + person.lastName);
}
var list = function(){
var i = contacts.length;
for(var j= 0; j < i ; j++){
printPerson(contacts[i]);
}
};
list();
})();
当我尝试调用printPerson()函数时,问题出现在list函数中我得到的那个人是未定义的但是如果我写了而不是list()函数:
printPerson(contacts[0]);
printPerson(contacts[1]);
一切正常。我在list()函数中做错了什么,它不起作用?
答案 0 :(得分:4)
var list = function(){
var i = contacts.length;
for(var j= 0; j < i ; j++){
printPerson(contacts[i]);
}
};
i
这是一个常量。如果你更换它:
var list = function(){
var i = contacts.length;
for(var j= 0; j < contacts.length ; j++){
printPerson(contacts[contacts.length]);
}
};
对于所有数组arr
,arr[arr.length]
将始终未定义。您可能需要contacts[j]
。
答案 1 :(得分:2)
for(var j= 0; j < i ; j++){
printPerson(contacts[i]); // this should be contacts[j]
}
答案 2 :(得分:0)
contacts.forEach(function(contact) {
printPerson(contact);
});
答案 3 :(得分:0)
var bob = {
firstName: "Bob",
lastName: "Jones",
phoneNumber: "(650) 777-7777",
email: "bob.jones@example.com"
};
var mary = {
firstName: "mary",
lastName: "Johnson",
phoneNumber: "(650) 888 - 8888",
email: "mary.johnson@example.com"
};
var contacts=[bob,mary];
console.log(mary.phoneNumber);