0

ここにも同様の質問がありますが、これに関連する質問は見つかりませんでした。これが私の質問です:

これら 2 つの関数は、異なる結果を出力します。&& 演算子は本質的に入れ子になった if ステートメントと同じように機能するという印象を受けました。&& 演算子がどのように機能するかについて、明らかに誤解/論理的な間違いがあります。ループ内にいて、同時に条件を読み取ろうとすること、または同様のことと関係があると思いますが、誰かが何が起こっているのか詳しく説明できれば幸いです. 2 番目の関数の && 演算子で何が起こっているのですか? また、なぜプロパティが見つからないとして出力されるのですか?

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"
4

3 に答える 3