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
相关产品推荐
相关产品推荐

