You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

freeCodeCamp资料查询挑战:为何for循环内return返回错误结果?

关于freeCodeCamp Profile Lookup挑战的return位置问题解析

问题背景

在完成freeCodeCamp的Profile Lookup挑战时,我始终搞不懂为什么return "No such contact"必须放在for循环外面。最开始我把它作为if语句的else分支,结果代码总是返回"No such contact",而不是目标属性值。虽然知道要等循环完成所有迭代后再执行return,但不清楚具体原因和代码失效的机制。

错误代码及失效原因

错误版本代码如下:

function lookUpProfile(name,prop) {
  for(let n = 0; n<contacts.length; n++ ){
    if(name == contacts[n].firstName && contacts[n].hasOwnProperty(prop)){
      return contacts[n][prop]
    } else {
      return "No such contact"
    }
  } 
}

当调用console.log(lookUpProfile("Kristian", "lastName"))时,结果为"No such contact",但实际应该返回"Vos"。

问题出在return语句的特性上:一旦函数执行到return,会立刻终止整个函数的运行。在错误代码里,第一次循环(n=0)时,当前联系人是"Akira",和目标名字"Kristian"不匹配,直接触发else分支,执行return "No such contact",函数直接结束,根本没机会遍历后面的联系人(包括索引3的Kristian)。这就导致循环还没找到目标就提前终止,返回了错误结果。

正确代码及逻辑说明

修正后的完整代码如下:

// Setup
const contacts = [
  {
    firstName: "Akira",
    lastName: "Laine",
    number: "0543236543",
    likes: ["Pizza", "Coding", "Brownie Points"],
  },
  {
    firstName: "Harry",
    lastName: "Potter",
    number: "0994372684",
    likes: ["Hogwarts", "Magic", "Hagrid"],
  },
  {
    firstName: "Sherlock",
    lastName: "Holmes",
    number: "0487345643",
    likes: ["Intriguing Cases", "Violin"],
  },
  {
    firstName: "Kristian",
    lastName: "Vos",
    number: "unknown",
    likes: ["JavaScript", "Gaming", "Foxes"],
  },
];

function lookUpProfile(name, prop) {
  // Only change code below this line
  let n = 0; // index of contacts array
  for(n = 0; n<contacts.length; n++ ){
    if(name == contacts[n].firstName){
      return contacts[n][prop] || "No such property"
    } 
  } 
  return "No such contact"

  // Only change code above this line
}

lookUpProfile("Akira", "likes");

这里的核心逻辑是:

  • 循环会逐个遍历所有联系人,只要找到匹配名字的项,就直接return对应的属性值(如果属性不存在,contacts[n][prop]会是undefined,触发||后的"No such property"),函数终止。
  • 只有当循环完整遍历完所有联系人都没找到匹配名字时,才会执行循环外面的return "No such contact",这才符合"没有该联系人"的判断逻辑。

内容的提问来源于stack exchange,提问作者szayel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:37:30