几分钟前我在Codeacademy上练习了一些JavaScript,我发现了一些令人困惑的东西.这是代码:
var friends = {};
friends.bill = {
firstName: "Bill",
lastName: "Gates",
number: "(206) 555-5555",
address: ['One Microsoft Way','Redmond','WA','98052']
};
friends.steve = {
firstName: "Steve",
lastName: "Jobs",
number: "(408) 555-5555",
address: ['1 Infinite Loop','Cupertino','CA','95014']
};
var list = function(obj) {
for(var prop in obj) {
console.log(prop);
}
};
var search = function(name) {
for(var prop in friends) {
if(friends[prop].firstName === name) {
console.log(friends[prop]);
return friends[prop];
}
else {
return "contact not found";
}
}
};
list(friends);
search("Steve");
Run Code Online (Sandbox Code Playgroud)
问题是,当我在搜索功能中将字符串"Steve"作为arg传递时,它返回条件"未找到联系人",而当我在同一搜索功能中将字符串"Bill"作为arg传递时,它显示联系信息.
怎么可能?我究竟做错了什么?
在你的代码中,在循环的第一次迭代中,prop值是除了之外的其他东西Steve.因此,if条件失败,到达else零件并contact not found立即返回.
但是,not found只有在没有任何对象firstName匹配时才应该返回消息,就像这样
function search(name) {
for (var prop in friends) {
if (friends[prop].firstName === name) {
return friends[prop];
}
}
return "contact not found";
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |