freeCodeCamp个人资料查询函数问题:我的代码为何无法运行?
问题解析:freeCodeCamp个人资料查询函数的逻辑错误
你的代码无法正常运行的核心问题是在for循环内部的else分支过早返回结果,导致循环没有完成所有联系人的检查:
- 当循环执行到第一个联系人时,如果其
firstName和传入的name不匹配,你的代码会立刻进入else分支,执行return "No such contact",直接终止整个函数,后续的联系人根本没有被检查的机会。 - 正确解法的逻辑是:先遍历所有联系人,只要找到
firstName匹配的项,就检查目标属性是否存在并返回对应结果;只有当全部联系人都遍历完毕,完全没有找到匹配的name时,才返回"No such contact"。
错误代码的关键问题片段
for (let i=0;i<contacts.length;i++){ if (contacts[i].firstName===name){ // 属性检查逻辑 }else{ return "No such contact" // 此处直接返回,循环提前终止 } }
正确逻辑的核心实现
for (let x = 0; x < contacts.length; x++) { if (contacts[x].firstName === name) { // 找到匹配联系人后,检查属性并返回 if (contacts[x].hasOwnProperty(prop)) { return contacts[x][prop]; } else { return "No such property"; } } // 未匹配时不返回,继续下一次循环 } return "No such contact" // 遍历完所有联系人后才返回此结果
简单来说,return语句会直接结束函数执行,你在循环的第一次不匹配就返回,相当于只检查了第一个联系人就下定论。正确的做法是让循环完整遍历所有可能的联系人,确认没有匹配项后再返回"无此联系人"的结果。
内容的提问来源于stack exchange,提问作者harrnui
相关产品推荐
相关产品推荐

