closures - 为什么闭包函数不能实现尾调用优化?
问题描述
我在解释尾调用的书中看到了一个示例:
function outer(){
let a = 1
function inner(){ return a}
return inner()
}
而且书上说既然inner
是闭包函数,就不能实现尾调用优化。
但是不a
存储在堆中(不存储在堆栈中,因为它是一个闭包变量)?所以即使当栈帧推入时栈帧outer
弹出(并被销毁) , 闭包仍然可以访问变量,对吗?如果是这样,为什么尾调用优化在这里不起作用?inner
inner
a
解决方案
推荐阅读
- python - 将文本传递到 tkinter 上的标签中
- ssl - IIS 使用错误的主题备用名称签名?
- python - 如何从方法内部更改外部变量的值
- python - Pandas DataFrame.sort_index() 在排序数据上的性能可以提高吗?
- spring-integration - RecipientListRouter 执行顺序
- json - 使用 json 模式验证器根据有效负载中另一个字段的值验证 EAV 有效负载中某些键的存在
- django - 如何遍历 Django 模板中的多个字段?
- corda - 具有 OneToMany 映射的 LinearState
- javascript - 如何离线查看一个简单的 create-react-app 组件?
- go - 初始化从 XML 创建的嵌套匿名结构到结构转换器