0

嗨,我一直在尝试使用 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();
})();

问题出在 list 函数中,当我尝试调用 printPerson() 函数时,我得到那个人是未定义的,但是如果我写而不是 list() 函数,则:

    printPerson(contacts[0]);
    printPerson(contacts[1]);

一切正常。我在 list() 函数中做错了什么,它不起作用?

4

4 回答 4

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]);
    }
};

对于所有数组arrarr[arr.length]将始终未定义。你可能想要contacts[j].

于 2012-04-06T18:37:17.793 回答
2
for(var j= 0; j < i ; j++){
    printPerson(contacts[i]); // this should be contacts[j]
}
于 2012-04-06T18:37:38.413 回答
0
contacts.forEach(function(contact) {
    printPerson(contact);
});
于 2012-04-06T19:35:58.520 回答
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);
于 2016-08-03T06:55:51.517 回答