为什么在下面的代码中我无法用 javascript 中的点符号打印 return 语句

why in the below code i'm not able to print the return statement with the dot notation in javascript

我正在学习 javascript 我遇到了这个问题,我有一个函数接受一个对象和一个 属性 我必须在 [=15= 的帮助下检查] 函数传递给函数的对象是否具有 属性,如果它具有 属性 而不是 return,则它的值否则为 return "Not Found"。

这是我创建的函数:

function checkObj(obj, checkProp) {
  if(obj.hasOwnProperty(checkProp)){
    return obj.checkProp;  
  }else{
    return "Not Found";
  }  
}

函数的输入:

checkObj({gift: "pony", pet: "kitten", bed: "sleigh"}, "gift")

所以我发现,经过数小时的尝试并最终观看了解决方案视频,括号表示法可以完成这项工作 解决方案代码

function checkObj(obj, checkProp) {
  if(obj.hasOwnProperty(checkProp)){
    return obj[checkProp];  
  }else{
    return "Not Found";
  }  
}

那么谁能解释一下为什么点符号无法完成任务?

它不适用于点符号,因为obj.checkProp 试图从 obj.

中读取名为 checkProp 的 属性

在Javascript中,点运算符用于访问对象的属性。它以一个对象作为第一个参数,一个 属性 名称作为第二个运算符。注意:它采用 属性 name 作为第二个参数 - 不会对第二个参数进行进一步的替换或代码执行。

如果您使用 obj.checkProperty,您将访问 obj 中存储的对象的名为 checkProperty 的 属性。此对象在您的示例中没有具有该名称的 属性,因此这将失败。

想要实现的是使用存储在变量checkProperty[=26=中的名称调用属性 ].这必须使用括号符号来完成,因为在这里,进一步的代码执行完成了——注意 obj["checkProperty"](等于 obj.checkProperty)和 obj[checkProperty].[=17= 之间的区别]