为什么 if 语句不接受括号表示法而不是点表示法?

Why the if statement is not accepting bracket-notation instead of dot-notation?

var contacts = [
{
    "firstName": "Akira",
    "lastName": "Laine",
    "number": "0543236543",
    "likes": ["Pizza", "Coding", "Brownie Points"]
},
{
    "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"]
}];
function lookUpProfile(firstName, prop){
for (var i = 0; i < contacts.length; i++){
if (firstName === contacts[i].firstName) {
if (contacts[i][prop]) {
    return contacts[i][prop];
} else {
    return "No such property";
  }
}
}
return "No such contact"; 
}
lookUpProfile("Akira", "likes");

这段代码运行完美。但是如果我使用 if (firstName === contacts[i] [firstName]) 而不是 if (firstName === contacts[i].firstName),它就不起作用。为什么?由于点或括号符号都可用于访问对象 属性.

括号用于变量。如果你想将它们与字符串文字一起使用,你可以,但你必须引用它们:contacts[i]['firstName']。但除非 属性 名称包含受限字符(例如另一个点或 space),否则这很愚蠢。

请注意,您已经将它与 i(它是一个变量)一起使用,以获取第 i 个元素(而不是称为 i 的 属性) .