JavaScript中return关键字作用解析:为何传入函数而非直接传值
关于代码中
return和回调函数的困惑解答 嘿,我来帮你把这两个点掰扯清楚~
首先说return的作用
你完全没看错——那个匿名函数里的return 28确实是返回数字28!只不过这里的逻辑需要拆解来看:
- 你给
addTwo传了一个匿名函数作为第二个参数(也就是fn); - 在
addTwo内部,代码调用了fn(),这时候这个匿名函数会执行,return 28就会把28作为fn()的执行结果返回; - 最后
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
相关产品推荐
相关产品推荐

