Javascript函数返回对象undefined的问题?

新手上路,请多包涵
    function checkObj(obj, checkProp) {
        // Only change code below this line

        if (obj.hasOwnProperty(checkProp) === true) {
            return obj[checkProp];
        } else {
            return "Not Found";
        }

        // Only change code above this line
    }
    // Only change code above this line
    console.log(checkObj({gift: "pony", pet: "kitten", bed: "sleigh"}, "gift"));

为什么返回的时候只能写成return obj[checkProp];
而不能写成return obj.checkProp;会输出Undefined

阅读 1.9k
5 个回答

obj[checkProp]表示动态获取, obj的key值是动态的, checkProp变量存的什么就是获取什么属性:
比如checkProp = '12234'那么obj[checkProp]就等价于obj.1234
obj.checkProp表示获取key为checkProp的值, obj没有这个key, 就是undefined了:

看一些这个官方文档讲解的很清楚属性访问器

obj.checkProp是指获取obj的checkProp属性,checkProp表示具体属性,但这里checkProp应该是一个变量,是obj上的动态属性

这个应该看的懂把!

let obj = { 'a':1 };
let checkProp = 'a';
obj[checkProp] // 1
obj.checkProp //undefined

checkProp是变量名

  • 放到[]内时会解析变量对应的值,然后根据值去找对应的数据
  • 放到.后面时不用解析它的值,直接根据名字取找对应的数据

obj.checkPropobj["checkProp"] ,而不是 obj[checkProp]

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题