Javascript 嵌套if语句与&&;(或)操作员
我一直在尝试用以下代码解决这个问题:Javascript 嵌套if语句与&&;(或)操作员,javascript,arrays,object,if-statement,Javascript,Arrays,Object,If Statement,我一直在尝试用以下代码解决这个问题: function lookUpProfile(name, prop){ for (let a = 0; a < contacts.length; a++) { if (contacts[a].firstName == name && contacts[a].hasOwnProperty(prop)) { console.log(contacts[a][prop]); } else if (name != cont
function lookUpProfile(name, prop){
for (let a = 0; a < contacts.length; a++) {
if (contacts[a].firstName == name && contacts[a].hasOwnProperty(prop)) {
console.log(contacts[a][prop]);
}
else if (name != contacts[a].firstName) {
return "No such contact";
}
else {
return "No such property";
}
}
函数lookUpProfile(名称、属性){
for(设a=0;a
但是,本页提出了以下建议,并且有效:
for (var x = 0; x < contacts.length; x++){
if (contacts[x].firstName === name) {
if (contacts[x].hasOwnProperty(prop)) {
return contacts[x][prop];
} else {
return "No such property";
}
}
}
return "No such contact";
for(变量x=0;x
我还尝试将上述内容修改为:
for (var x = 0; x < contacts.length; x++) {
if (contacts[x].firstName === name && contacts[x].hasOwnProperty(prop)) {
return contacts[x][prop];
} else {
return "No such property";
}
}
}
return "No such contact";
for(变量x=0;x
但是没有用。
所以我的问题是,为什么我的代码不能工作?为什么需要使用嵌套的if语句而不是&&运算符
感谢您的关注。您发布的每个函数(关于最后两个)都有其独特的行为。不同之处在于,当您有
联系人时,在修改的函数中,如果使用if
语句测试的表达式的计算结果为false
,将返回“无此类属性”
,您将只返回“无此类联系人”
如果没有联系人,则只有联系人。如果函数的输入是“Harry”,恰好位于对象的第二或第三位,则循环将无法到达,因为在第一次迭代时,它将转到“无此类联系人”,并停止运行函数 使用您创建的函数将始终返回:contacts[x][prop]
或“无此类属性”
,且此行返回“无此类联系人”代码>永远不会执行,为什么?
通过嵌套两个if
语句,新的if
语句将返回以下任一语句:contacts[x][prop]代码>如果验证为true
或如果验证为false
则“无此类属性”
,因此即使联系人[x].firstName==name
条件验证为false
,此行也将不再执行/访问。这就是为什么要使用两个if
语句:第一个返回“无此类联系”代码>如果它是false
(即使没有else
语句,因为如果它验证为false
,那么在第一个if
语句中将不会执行任何操作,因此,函数会跳到该if
语句之后的下一行,该语句返回“无此类接触”
)
简单地说:即使联系人[x].firstName===name
是falsy,您的函数也将返回“无此类属性”
下面是一个片段来说明:
//一些虚拟值只用于演示!
var触点=[
{
名字:“ths”,
姓:“萨克”
},
{
名字:“名字”,
姓氏:“姓氏”
}
];
/**
*修正函数
**/
var r=(函数测试(名称、属性){
对于(变量x=0;x您应该检查