Несколько минут назад я практиковал JavaScript на Codeacademy, и я нашел что-то запутанное. Вот код:Зачем нужен еще блок, даже если условие истинно?
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");
Проблема заключается в том, что, когда я передать строку «Steve» в качестве аргумента в функции поиска, он возвращает условие «Контакт не найден», а когда я передать строку «Билл» как arg в той же функции поиска, он отображает контактную информацию.
Как это возможно? Что я делаю не так?
Спасибо, но почему это работает, когда я передаю строку «Билл» вместо «Стив»? –
@AhmedMagdy 'Bill' - это первый ключ, возвращаемый при повторении объекта' friends'. Чтобы подтвердить это, вы можете использовать 'console.log' внутри цикла' for'. – thefourtheye