Javascript 错误:调用另一个函数返回的函数时未定义函数

Javascript 错误:调用另一个函数返回的函数时未定义函数,javascript,higher-order-functions,Javascript,Higher Order Functions,我正在尝试编写一个返回另一个函数的函数。我的目标是编写一个函数,它接受一个对象并返回另一个函数“search”。当我用一个键调用search函数时,我想从第一个函数中给出的对象返回该键的值 propertyOf = function(object) { return search = function (key) { for (key in object) if (key === object.property){ return objec

我正在尝试编写一个返回另一个函数的函数。我的目标是编写一个函数,它接受一个对象并返回另一个函数“search”。当我用一个键调用search函数时,我想从第一个函数中给出的对象返回该键的值

propertyOf = function(object) {
    return search = function (key) {
    for (key in object)
        if (key === object.property){
            return object[property]
        }
     }
  }
假设我有一个目标:

var me = {name: "Bob", age: 87}
如果我调用(me)的
属性
,我会得到[Function:search]作为结果。当我调用
search(age)
时,我得到一个错误,搜索未定义。在仍然引用要搜索的对象时,如何使用键调用“inside”函数

考虑试试这个:

let bob = {
  name: 'Bob',
  age: 87
},
searchBob;

propertyOf = object => {
  return propName => {
    for (let key in object) {
  if(key === propName) return object[key]
    }
  }
}

searchBob = propertyOf(bob);

// Call it like this:

console.log(searchBob('age')); // 87

-我无法重现你描述的问题。试着提供一个真实的。旁白:
propertyOf
返回任何东西都没有意义,如果你要忽略返回值,只使用由函数创建的全局值。“key=object.property”应该是key==object.propertysearch函数已定义,但返回“undefined”的正是该函数,由于if语句中的条件从未满足,并且在未找到元素的情况下没有其他返回,因此您需要了解局部变量以及如何使用
var
声明它们。这正是我要做的,谢谢!只是为了澄清=>箭头的用法:我想用传统的符号来写它,并且我已经将函数的前两行替换为:'propertyOf=function(object){return propName=function(){'但是我不再得到正确的输出,它只是说未定义。我的语法有什么问题吗?为什么我不把(key)作为第二个函数的参数?在函数顶部设置“searchBob”的目的是什么?很抱歉,在我处理这段代码时,还有一个问题-“propName”是函数的名称吗?如果是,评估(key==propName)是否意味着什么?特别困惑,因为它在函数内部,那么代码如何检查函数是否等于键?