为什么这个功能打印出来' undefined'?

时间:2014-04-03 21:22:04

标签: javascript

下面的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

有人可以解释为什么会这样吗?

3 个答案:

答案 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