标签:运行 return语句 字符串类型 def 判断 class 返回 执行 size
昨天刷题卡在这了,觉得很简单一个问题啊,为什么不对呢,甚至还怀疑过有bug。然后百度找答案,搜到第一个兄弟的答案,我发现了他的两个错误,因此找到了我的原因。
建议小伙伴自己思考一遍,做一遍再来看该文章。
相信你已经做过一遍了,如果没做对,请检查以下两个问题:
1.你的代码运行后是否一直显示 “No such contact”?
如果是,那要仔细看啦,原因在于你把 return "No such contact"; 这条语句放到for循环里面了!for循环执行第一遍的时候 如果运气不好都不符合那就会返回这个字符串,函数也就结束了,但是,这个时候只是遍历了对象数组的第一个元素,也就是说,这个函数的作用只是判断第一个对象是否满足要求...这不是我们所希望的,我们希望它遍历所有的对象...所以应该等它都遍历完(即 放到for循环外面),如果不满足返回"No such contact".
2.你的代码运行后是否一直显示undefined?
如果是,你这问题就简单多了。自习看看你的return语句是否这样写的 : return contacts[i].prop; 这样写也没错啊? 没错你个大头鬼啊! prop是形参,对应的实参题目中给的是字符串类型,你见过 点(.) 运算符后面接字符串的啊? 所以正确写法: return contacts[i].[prop];
完整代码如下:
function lookUp(firstName,prop){ for(var i=0;i<contacts.length;i++){ if(firstName==contacts[i]["firstName"]){ if(contacts[i].hasOwnProperty(prop)){ return contacts[i][prop]; } else{ return "No such property"; } } } return "No such contact";
顺便说一句,建议 即使分支语句的语句体只有一条语句时,也要加上大括号。
这个问题促使了我开通这个博客...
目前,前端大三狗,爱前端,爱后端,爱爬虫...
标签:运行 return语句 字符串类型 def 判断 class 返回 执行 size
原文地址:http://www.cnblogs.com/none1997/p/7586606.html