我正在尝试捕获传递给回调函数的参数' func'功能。但是,当我尝试在我的'缓存中控制日志参数时函数除了回调函数的名称外,它不会给出任何东西。
但是当我添加一个辅助内部函数时,日志记录工作正常,它允许我访问回调接收的参数。我真的想了解内部函数如何执行任务,但外部函数不能。
function cache(func) {
console.log(arguments); //logs { '0': [Function: complexFunction] }
return function () {
console.log(arguments); //logs { '0': 'foo', '1': 'bar' }
}
}
var complexFunction = function(arg1, arg2) { return arg1 + arg2 };
var cachedFunction = cache(complexFunction);
console.log(cachedFunction('foo', 'bar')); // complex function should be executed
答案 0 :(得分:2)
内部功能是一个不同的功能。当你调用它时(因为它已被返回并分配给cachedFunction
),你会传递不同的参数。
cachedFunction('foo', 'bar')
应执行复杂功能
不是。
您永远不会执行complexFunction
。
您将其作为参数传递给cache
,cache
将其传递给arguments
console.log
function cache(func) {
console.log(arguments); //logs { '0': [Function: complexFunction] }
return function () {
console.log(func.apply(null, arguments));
}
}
,但永远不会{ em>被调用。
如果你想打电话,那么你需要实际做到这一点。
{'$set': {'babies.$.age':10}}