您的代码未按您认为应有的方式工作的原因是由于这一行:
var contactsLength = contacts.length;
在这里,您分配的值contacts.length
到变量contactsLength
,但此后,contactsLength
即使你的大小也不会改变contacts
数组变化。
相反,您应该简单地引用该属性contacts.length
.
这是您的代码的更正版本:
var bob = {
firstName: "Bob",
lastName: "Jones",
phoneNumber: "(650) 777-7777",
email: "[email protected] /cdn-cgi/l/email-protection"
};
var mary = {
firstName: "Mary",
lastName: "Johnson",
phoneNumber: "(650) 888-8888",
email: "[email protected] /cdn-cgi/l/email-protection"
};
var contacts = [bob, mary];
function add (firstName, lastName, phoneNumber, email) {
contacts[contacts.length] = {
firstName: firstName,
lastName: lastName,
phoneNumber: phoneNumber,
email: email
};
};
function printPerson(person) {
console.log(person.firstName + " " + person.lastName);
}
function list() {
for (var i = 0; i < contacts.length; i++) {
printPerson(contacts[i]);
}
}
add("MJ", "Foster", "MJ@gmail", "714-333-5555");
list();
请注意:使用原生数组方法push()
,会做完全相同的事情contacts[contacts.length] = {...}
.