javascript - 为什么即使条件为真也会执行 else block ?

标签 javascript object

几分钟前,我在 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");

问题是,当我在搜索函数中将字符串“Steve”作为参数传递时,它返回条件“Contact not found”,而当我在同一搜索函数中将字符串“Bill”作为参数传递时,它显示联系信息。

这怎么可能?我做错了什么?

最佳答案

在您的代码中,在循环的第一次迭代中,prop 值与 Steve 不同。因此,if 条件失败,到达 else 部分并立即返回 contact not found

但是,只有当没有对象的 firstName 匹配时,你才应该返回 not found 消息,就像这样

function search(name) {
  for (var prop in friends) {
    if (friends[prop].firstName === name) {
      return friends[prop];
    }
  }
  return "contact not found";
};

关于javascript - 为什么即使条件为真也会执行 else block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34818314/

相关文章:

javascript - 计算 JavaScript 数组中对象的出现次数

javascript - $ ('#id' ).attr ('aria-expanded' ) === true) 不起作用

javascript - 在 javascript 中使用 'continue' 标志?

javascript - onClick 不工作 React js

javascript - 使用 'for in' 检查 key 返回未定义

javascript - 如何从 JSON 对象中读取键

javascript - 将数组分组为更复杂的数组

Python,如何使用列表中输入的项目并使用它们来分配另一个值?是否可以

javascript - Telerik grid 的 IsContainedIn FilterOperator 的 Javascript 比较运算符是什么

javascript - 如何从请求库中获取在浏览器中看到的准确页面