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

解析Lodash中createMathOperation函数的工作原理及参数传递逻辑

我来帮你把这段代码拆解开,用更直白的写法和步骤解释清楚,你就能明白整个流程啦!

首先,这段代码用到了高阶函数(就是能接收函数作为参数,或者返回函数的函数),createMathOperation就是这样一个函数。我们先把所有箭头函数转换成普通函数的长形式,这样更容易看明白:

// 把箭头函数改成普通函数的长形式
function createMathOperation(operator) {
  // 这里打印的operator就是你传入的运算函数
  console.log(operator); 
  // 返回一个新的内部函数
  return function innerFunction(value, other) {
    // 调用传入的operator函数,把value和other作为参数传进去
    return operator(value, other);
  };
}

// 单独定义加法函数,替代原来的箭头函数
function addNumbers(augend, addend) {
  return augend + addend;
}

// 调用createMathOperation,传入加法函数,得到add这个函数
const add = createMathOperation(addNumbers);

// 调用add(1,2),本质是调用innerFunction(1,2)
add(1, 2); // 结果是3

接下来一步步拆解执行流程:

  • 定义createMathOperation函数:它的作用是“包装”一个运算逻辑(比如加法),返回一个可以直接调用的运算函数。它的参数operator是一个函数,代表你要执行的运算。
  • 定义addNumbers函数:这就是普通的加法逻辑,接收两个参数augend(被加数)和addend(加数),返回它们的和。
  • 创建add函数:当你执行createMathOperation(addNumbers)时,createMathOperation内部的operator就指向了addNumbers这个加法函数,然后它会返回内部定义的innerFunction,这个innerFunction就是add变量实际指向的东西。
  • 调用add(1,2):这时候其实是调用innerFunction(1,2),innerFunction会把自己的参数value(也就是1)和other(也就是2)传给operator(也就是addNumbers),相当于执行addNumbers(1,2),最终得到1+2=3的结果。

关于你困惑的参数对应:value对应augend,other对应addend,因为函数调用时参数是按顺序传递的——第一个参数传给函数的第一个形参,第二个传给第二个形参,所以operator(value, other)就等同于把value作为被加数,other作为加数代入加法逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:20:24