freecodecamp上一道关于js循环的题

新手上路,请多包涵

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

函数lookUp有两个预定义参数:firstName值和prop属性 。

函数将会检查通讯录中是否存在一个与传入的firstName相同的联系人。如果存在,那么还需要检查对应的联系人中是否存在prop属性。

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

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

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

2.这是系统的代码

function lookUpProfile(name, prop){
// 请把你的代码写在这条注释以下
for (var i = 0; i < contacts.length; i++){
    if (contacts[i].firstName === name) {
        if (contacts[i].hasOwnProperty(prop)) {
            return contacts[i].hasOwnProperty(prop);
        } else {
            return "No such property";
        }
    }
}
return "No such contact";
// 请把你的代码写在这条注释以上
}
// 你可以修改这一行来测试你的代码
lookUpProfile("Akira", "likes");

3.这是我的代码

function lookUpProfile(name, prop){
// 请把你的代码写在这条注释以下
for (var i = 0; i < contacts.length; i++){
    if (contacts[i].firstName === name) {
        if (contacts[i][prop]) {
            return contacts[i][prop];
        } else {
            return "No such property";
        }
    }
}
return "No such contact";
// 请把你的代码写在这条注释以上
}
// 你可以修改这一行来测试你的代码
lookUpProfile("Akira", "likes");

上面两个代码都是正确的,但是我不知道contacts[i][prop]contacts[i].hasOwnProperty(prop)这两者之间的区别,他们是一样的吗?

阅读 1.7k
1 个回答

contacts[i].hasOwnProperty(prop)只会检测对象自身定义属性存在返回true 不存在false 不会检测对象原型属性

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题