错误:调用另一个函数返回的函数时未定义函数
我试图编写一个返回另一个函数的函数。我的目标是编写一个函数,它接受一个对象并返回另一个函数“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}
如果我打电话propertyOf (me)
,我得到[功能:搜索]作为结果。当我打电话给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 = function(object){return 0} {} {} '但我不再得到正确的输出,它只是说未定义。我在做什么错我的语法?为什么我不必把(键)作为第二个函数的参数? – Ana
在函数顶部有'searchBob'的目的是什么? – Ana
对不起还有一个问题,因为我正在通过此代码工作 - 是'propName'函数的名称?如果是这样,评估是否(key === propName)意味着什么?特别困惑,因为这是INSIDE函数,所以代码如何检查函数是否等于密钥? – Ana
http://jsbin.com/tubixusevi/1/edit?js,console - 我无法重现您所描述的问题。尝试提供一个真正的[mcve]。 – Quentin
除此之外:如果您要忽略返回值并仅使用函数创建的全局函数,那么'propertyOf'中没有任何返回值。 – Quentin
*“key = object.property”*应该是** key == object.property ** – derloopkat