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

JavaScript闭包问题:无法获取内部闭包返回值求解答

问题分析与解决

你的代码核心问题是没有使用内部函数anotherOne的返回值,最后solution函数返回的还是一开始定义的result变量,和闭包本身无关,是返回逻辑的问题。

具体问题点

  • 你调用了anotherOne(),但没有把它的返回值保存或者直接返回,最后return result;这行代码决定了solution()的返回值是3。
  • 代码里存在冗余的变量声明:比如solution函数的参数被重新赋值,anotherOne的参数也被重新定义,这些不影响逻辑但会让代码混乱。

修正后的代码

如果想让solution返回anotherOne的返回值,只需要把anotherOne()的结果作为solution的返回值即可:

function solution(param1, param2) {
  var param1 = 1;
  var param2 = 2; 
  var result = param1 + param2;

  function anotherOne(){
    var innerParam1 = 0;
    var innerParam2 = 1000;
    var final = innerParam1 + innerParam2;
    console.log(result);
    console.log(final);
    return final;
  }
  
  // 调用anotherOne并返回它的结果
  return anotherOne();
}

console.log(solution()); // 输出1000

关于闭包的说明

你这里的anotherOne确实是闭包,它能访问外部函数solution里的result变量(比如你能console.log(result)输出3),这部分是正常的。之前的问题和闭包无关,只是你没正确返回内部函数的结果而已。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 01:49:51