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

JavaScript闭包场景下返回函数的参数值来源是什么?

解惑闭包示例中number参数的来源

嘿,我来帮你把这个点掰明白!首先咱们先把你提到的代码再贴一遍,方便对照看:

function multiplier(factor){ 
  console.log('factor:'+factor); 
  return function(number){ 
    console.log('number:'+number) 
    return number * factor; 
  }; 
}
var twice = multiplier(2); 
console.log('twice:'+twice(5));

你疑惑的number参数的值其实就是你调用返回的那个函数时传进去的参数,和闭包本身的“记住外层变量”特性是两回事,咱们一步步拆解执行流程就清楚了:

  • 第一步:执行var twice = multiplier(2);
    这里调用了multiplier函数,传入参数2,所以函数里的factor就是2,先打印factor:2。然后multiplier返回了一个匿名函数(就是那个带number参数的函数),此时twice变量就指向了这个匿名函数。

  • 第二步:执行console.log('twice:'+twice(5));
    这里调用了twice,也就是调用刚才返回的那个匿名函数,并且传入了参数5——这个5就是给number参数的赋值!所以函数里的number就是5,先打印number:5,然后用5乘以闭包保存的factor(也就是之前的2),得到10,最后打印twice:10。

简单说,闭包负责让返回的函数记住外层的factor,而number就是你调用这个返回函数时正常传入的参数,就像你调用任何普通函数传参一样~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:41:31