问题描述
我在一本解释尾调用的书中看到了一个例子:
function outer(){
let a = 1
function inner(){ return a}
return inner()
}
而且书上说由于inner
是一个闭包函数,所以它不能实现尾调用优化。
但是 a
不是存储在堆中(不是在堆栈中,因为它是一个闭包变量)?所以即使 outer
的栈帧在 inner
的栈帧压入时弹出(并被销毁),inner
闭包仍然可以访问 a
变量,对?如果是这样,为什么尾调用优化在这里不起作用?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)