这里有类似的问题,但我找不到与此相关的问题。这是我的问题:
这两个函数输出不同的结果。我的印象是 && 运算符本质上与嵌套 if 语句的工作方式相同。我对 && 运算符的工作方式显然存在误解/逻辑错误。我相信这与处于循环中并尝试同时读取条件或类似的东西有关,但如果有人能详细说明正在发生的事情,将不胜感激。第二个函数中的 && 运算符是怎么回事,为什么它会输出未找到的属性?
var contacts = [
{
"firstName": "Harry",
"lastName": "Potter",
"number": "0994372684",
"likes": ["Hogwarts", "Magic", "Hagrid"]
},
{
"firstName": "Sherlock",
"lastName": "Holmes",
"number": "0487345643",
"likes": ["Intriguing Cases", "Violin"]
},
{
"firstName": "Kristian",
"lastName": "Vos",
"number": "unknown",
"likes": ["Javascript", "Gaming", "Foxes"]
},
{
"firstName": "Akira",
"lastName": "Laine",
"number": "0543236543",
"likes": ["Pizza", "Coding", "Brownie Points"]
}
];
function lookUp(arr, firstName, prop){
for (var x = 0; x < contacts.length; x++){
if (arr[x].firstName === firstName)
if (arr[x].hasOwnProperty(prop))
return arr[x][prop];
else
return "No such property";
}
}
lookUp(contacts, "Kristian", "likes")
// ["Javascript", "Gaming", "Foxes"]
function lookUp(arr, firstName, prop){
for (var x = 0; x < contacts.length; x++){
if (arr[x].firstName === firstName && arr[x].hasOwnProperty(prop))
return arr[x][prop];
else
return "No such property";
}
}
lookUp(contacts, "Kristian", "likes")
// "No such property"