javascript - 这三段代码区别在哪里?
黄舟
黄舟 2017-04-11 12:04:00
[JavaScript讨论组]

1.我们有一个对象数组,里面存储着通讯录。

函数 lookUp 有两个参数: firstName 和 prop 。

函数将会检查通讯录是否存在 firstName 值 和 prop 属性。

如果它们都存在,函数返回prop属性对应的值。

如果firstName 值不存在,返回 "No such contact"。

如果prop 属性不存在,返回 "No such property"。

2.第一段代码是错误的但是不知道错在哪里

for(var i = 0; i < contacts.length; i++){
        for(var j = 0; j < contacts[i].length; j++){
          if(contacts[i][j] == firstName && contacts[i].hasOwnProperty(prop)){
            return contacts[i][prop];
          }else if(!contacts[k].hasOwnProperty(prop)){
            return "No such property";
          }else{
            return "No such contact";
          }
        }
      }

3.这是对的代码,但是我觉得和上面的没有什么区别。。除了最后一句return放到了循环外。

for(var k in contacts){
   for(var i in contacts[k]){
     if(contacts[k][i] === firstName && contacts[k].hasOwnProperty(prop)){
       return contacts[k][prop];
     }else if(!contacts[k].hasOwnProperty(prop)){
       return "No such property";
     } 
   }
 }
  return "No such contact";

4.这也是对的代码,但是不太懂index的作用

function lookUp(firstName, prop){
// Only change code below this line
 var index;
  for(var i=0;i
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
巴扎黑

第一个写法的问题,对象不能用for(var j = 0; j < contacts[i].length; j++)遍历其属性。所以结果不正确

怪我咯

对第一个,你无论输入什么,输出结果都会是No such contact,我认为是因为这个结构并没有执行i++来检索所有的contact。
对第四个,index的作用是创造一个全局变量,如果不用先申明一个index,并把i的值赋给它,第二个if下面直接使用contacts[i]是没有意义的

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号