我正在致力于在Codecademy的JavaScript课程。在本练习中,我们应该创建函数add
,该函数应该将人员添加到contacts
阵列,然后使用提示从用户获取信息,之后我们调用函数list
以打印contacts
中的所有人员阵列到控制台。为什么这个函数打印“undefined undefined”作为联系人名称,添加了“new Object”?
当我运行下面的代码时,它列出contacts
阵列中的两个现有人员,但随后打印"undefined undefined"
给我尝试添加提示的人员。但是,当我打印contacts
的长度时,它说3
,因此添加了一个人。
任何帮助将不胜感激。
var bob = {
firstName: "Bob",
lastName: "Jones",
phoneNumber: "(650) 777 - 7777",
email: "[email protected]"
};
var mary = {
firstName: "Mary",
lastName: "Johnson",
phoneNumber: "(650) 888 - 8888",
email: "[email protected]"
};
var contacts = new Array(bob, mary);
function printPerson(person) {
console.log(person.firstName + " " + person.lastName);
}
function list() {
var length = contacts.length;
var i;
for (i = 0; i < length; i++) {
printPerson(contacts[i]);
}
}
/*Create a search function
then call it passing "Jones"*/
var search = function(lastName) {
var number = contacts.length;
for (i = 0; i < number; i++) {
if (contacts[i].lastName === lastName) {
printPerson(contacts[i]);
}
}
};
var add = function(firstName, lastName, email, telephone) {
contacts[contacts.length] = new Object(firstName, lastName, email, telephone);
};
var firstName = prompt("What is your first name");
var lastName = prompt("What is your last name");
var email = prompt("What is your email");
var telephone = prompt("What is your phone number");
add(firstName, lastName, email, telephone);
list();
的对象,评估的结果'person'是你期待什么不和它没有名为'firstName'或'lastName'的属性:'new Object(firstName,lastName,email,telephone)'< - 这不是你想要的。尝试使用对象文字,而不是在代码的开头使用。 – 2012-08-26 22:48:38
不要忘记声明变量(* i * in * search *)。也不是功能表达式的功能声明(* search *和* add *函数)的粉丝。最后,使用数组文本而不是数组构造函数,例如而不是'var contacts = new Array(bob,mary);'使用'var contacts = [bob,mary];'。 – RobG