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

printPerson()関数を呼び出そうとすると、list関数に問題がありますが、その人は未定義ですが、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 に答える