如何在另一个函数中访问回调参数?

时间:2016-12-29 00:19:18

标签: javascript function callback arguments

我正在尝试捕获传递给回调函数的参数' 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

1 个答案:

答案 0 :(得分:2)

内部功能是一个不同的功能。当你调用它时(因为它已被返回并分配给cachedFunction),你会传递不同的参数。

cachedFunction('foo', 'bar')
  

应执行复杂功能

不是。

您永远不会执行complexFunction

您将其作为参数传递给cachecache将其传递给arguments console.log function cache(func) { console.log(arguments); //logs { '0': [Function: complexFunction] } return function () { console.log(func.apply(null, arguments)); } } ,但永远不会被调用。

如果你想打电话,那么你需要实际做到这一点。

{'$set': {'babies.$.age':10}}