下面的list
函数应该列出我contacts
数组中人员的姓名。
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];
function printPerson(person) {
console.log(person.firstName + " " + person.lastName);
}
var list = function() {
var contactsLength = contacts.length;
for (var i = 0; i < contactsLength; i++) {
console.log(printPerson(contacts[i]));
}
};
list;
然而,我得到的不仅仅是打印鲍勃琼斯和玛丽约翰逊,
Bob Jones
undefined
Mary Johnson
undefined
有人可以解释为什么会这样吗?
答案 0 :(得分:5)
您的printPerson
方法会写入控制台,但不会返回任何值,因此在for
- 循环中您所拥有的位置:
for (var i = 0; i < contactsLength; i++) {
console.log(printPerson(contacts[i]));
}
它还尝试将printPerson
的返回值写入控制台,即undefined
。
要解决此问题,请从console.log
中删除for
- 循环或从printPerson
返回一个值,而不是在那里写入控制台。< / p>
答案 1 :(得分:0)
试试这个:
function printPerson(person) {
return person.firstName + " " + person.lastName;
}
答案 2 :(得分:0)
您的printPerson
函数会写入控制台。它不会显式返回值。当没有显式返回值的函数运行时,它返回undefined
值。控制台总是在运行后尝试显示函数的返回值,如果未设置显式值,则返回值undefined
。