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

JavaScript中赋值函数返回值给变量再调用的变化及闭包示例疑问

闭包示例代码的执行过程解析

咱们一步一步拆解最后两行代码的执行逻辑:

第一步:const newFunction = outerFunction('outside')

  • 调用outerFunction('outside')时,函数内部的outerVariable会被赋值为'outside'。
  • outerFunction的返回值是它内部定义的innerFunction函数——这里只是把innerFunction这个函数本身返回出来,并没有执行它。
  • 核心点:闭包的关键就在这——innerFunction被返回后,并没有丢失对outerFunction作用域里outerVariable的访问权,哪怕outerFunction已经执行完退出了,这个变量依然会被保留下来供innerFunction使用。

第二步:newFunction('inside')

  • 因为newFunction就是刚才outerFunction返回的innerFunction,所以调用newFunction('inside')其实就是在调用innerFunction('inside')。
  • 此时innerFunction的参数innerVariable被赋值为'inside',然后执行内部的两个console.log:
    • 第一个log用到的outerVariable就是之前保留的'outside';
    • 第二个log用到的是当前传入的'inside'。

最终控制台会输出:

outer variable: outside
inner variable: inside

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:10:49