1. 程式人生 > >Profile Lookup 任務詳解

Profile Lookup 任務詳解

發現 var 分支語句 code per 答案 括號 返回 結束

昨天刷題卡在這了,覺得很簡單一個問題啊,為什麽不對呢,甚至還懷疑過有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";

順便說一句,建議 即使分支語句的語句體只有一條語句時,也要加上大括號。

這個問題促使了我開通這個博客...

目前,前端大三狗,愛前端,愛後端,愛爬蟲...

Profile Lookup 任務詳解