You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中return关键字作用解析:为何传入函数而非直接传值

关于代码中return和回调函数的困惑解答

嘿,我来帮你把这两个点掰扯清楚~

首先说return的作用

你完全没看错——那个匿名函数里的return 28确实是返回数字28!只不过这里的逻辑需要拆解来看:

  1. 你给addTwo传了一个匿名函数作为第二个参数(也就是fn);
  2. 在addTwo内部,代码调用了fn(),这时候这个匿名函数会执行,return 28就会把28作为fn()的执行结果返回;
  3. 最后num + fn()就是28 + 28,所以控制台会输出56。

把代码拆成更直观的样子,你就能一眼看明白:

var addTwo = function(num, fn) {
  // 调用传入的函数,拿到它return的28
  var valueFromFn = fn();
  // 相加后打印结果
  console.log(num + valueFromFn);
}

// 调用时传入的匿名函数,执行时return 28
addTwo(28, function(){return 28;})

为什么要传函数而不是直接传值?

这个例子看起来确实有点“多此一举”——直接传28不就行了?但这其实是回调函数的典型用法,它的核心价值在于支持动态/延迟获取值:

  • 如果这个匿名函数里的逻辑不是固定return 28,而是比如return new Date().getHours()(返回当前小时数)、或者从后端接口拉取实时数值、或者根据某些条件动态计算出一个值,这时候传函数就非常有用了;
  • addTwo函数不需要关心fn是怎么得到值的,它只需要知道“调用fn就能拿到我需要的数值”,这样代码的耦合度更低,扩展性更强。

简单说,传函数相当于给addTwo留了一个“动态接口”,让它可以在需要的时候去获取实时生成的值,而不是一开始就把固定值塞进去。

内容的提问来源于stack exchange,提问作者james

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:21:52