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

JS闭包应用疑问:调用multFive(2)时参数2为何绑定到factor?

解惑:multFive(2) 中参数2如何赋值给factor?

嘿,这个问题问到点子上了——其实核心是闭包和函数调用的执行流程在起作用,我给你一步步拆解清楚:

首先先补全你场景里的代码(这是JS里闭包的经典示例):

// 定义生成乘法函数的外部函数
function multFn(num) {
  // 返回一个内部函数,这个函数会接收factor参数
  return function(factor) {
    return num * factor;
  };
}

// 用multFn生成一个固定乘以5的函数multFive
const multFive = multFn(5);

现在我们分两步看console.log(multFive(2))的执行逻辑:

第一步:multFn(5) 执行时的操作

当你运行const multFive = multFn(5)时:

  • JS会调用multFn,把5传递给它的num参数;
  • multFn内部会创建那个匿名的内部函数,但不会执行它;
  • 关键来了:这个内部函数通过闭包特性,会“记住”外部multFn作用域里的num值(也就是5),哪怕multFn执行完退出了,这个值也会被保留;
  • 最后multFn把这个内部函数的引用返回,赋值给multFive——也就是说,multFive其实就是那个内部函数的“别名”。

第二步:multFive(2) 执行时的操作

当你调用multFive(2)时:

  • 本质上是在调用那个被返回的内部函数;
  • 这个内部函数的形参就是factor,所以你传入的2会直接赋值给factor参数;
  • 函数内部用闭包保留的num(5)乘以factor(2),得到结果10;
  • 最后console.log把这个结果打印出来。

简单说:multFive本身就是那个需要factor参数的内部函数,你调用它时传的参数自然就对应到了内部函数的factor上,而闭包帮它记住了之前的num值,所以整个逻辑就通了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:24:55