【问题标题】:Why does this callback return undefined?为什么这个回调返回未定义?
【发布时间】:2026-01-06 11:05:01
【问题描述】:
function firstFunction(num, callback) {
  callback(num);
};

function secondFunction(num) {
  return num + 99;
};

console.log(firstFunction(56, secondFunction));
undefined

如果我从secondFunction 中调用console.log,它会返回值。

为什么不呢?如果我无法从中获取值以供以后使用,那么设置回调有什么意义?我错过了一些东西。

【问题讨论】:

  • 你忘记了callback的返回值链。

标签: javascript callback


【解决方案1】:

在您的函数firstFunction 中,您可以:

callback(num);

计算结果为

56 + 99;

然后是

155;

但你永远不会返回值!如果没有返回值,函数将简单地计算为 undefined


尝试这样做:

function firstFunction(num, callback) {
  return callback(num);
};

【讨论】:

  • 你已经回答了这个问题。不过,在一个快速的旁注中,说 secondFunction 有一个 setTimeout(),并在其中包含返回并以某种方式延迟它。看来如果是这样的话,原来的并没有等待它,只是再次返回 undefined 。
【解决方案2】:

firstFunction 不返回任何内容,简单明了!这就是为什么当你console.log的返回值是undefined

有问题的代码:

callback(num);

调用callback,然后对返回的值不做任何事情。你想要:

return callback(num);

【讨论】:

    最近更新 更多