我很好奇这是如何处理的,我假设它主要取决于引擎的实现,但为了举例,让我们使用chrome,每次调用外部函数时都会重新创建嵌套函数,或者它们是简单存储的在某个地方只能在该范围内访问?嵌套函数是否重新创建每个调用?
0
A
回答
1
函数体将被编译一次并存储在某个地方。但是,如果函数引用了任何自由变量,那么它将有一个闭包环境,每次调用父函数时都会更改,以捕获该调用的变量绑定。
0
每次调用外部函数时都会生成一个内部函数的副本。这不是浏览器优化的问题,而是一种必要性,因为每个闭包需要保持对在其自己的外部范围中声明的变量的引用。
function outer()
{
function inner()
{
}
return inner;
}
var inner1 = outer();
var inner2 = outer();
console.log('Inner functions are ' + (inner1 === inner2 ? 'identical' : 'different'));
无论如何,这并不意味着这些实例没有在引擎级别的性能优化,并在运行时缓存。例如,铬高速缓存功能编译数据和call sites,即在发生函数调用的代码中的位置,以加速执行。
相关问题
- 1. 创建一个仿函数的调用类或嵌套函数
- 2. jmx是否为每个调用创建一个新线程?
- 3. 是否必须重新定义嵌套函数?
- 4. 是否为每个请求创建了新套接字?
- 5. 是否可以调用嵌套在另一个函数中的函数?
- 6. 回调函数是否与嵌套函数相同?
- 7. 在原型上定义函数时,是否在每个新实例上重新创建函数?
- 8. 嵌套函数调用
- 9. 调用嵌套函数
- 10. Javascript,调用嵌套函数
- 11. 调用Angular嵌套函数
- 12. 嵌套函数调用
- 13. MIPS嵌套函数调用
- 14. Python是否可以重新创建整个调用堆栈?
- 15. 嵌套函数被禁用,使用-fnested函数重新启用
- 16. AngularJS嵌套两个函数调用
- 17. Clojure是否为每个函数调用重复启动新的类(对象)?
- 18. Javascript数组,为每个增量创建一个嵌套数组
- 19. 是否有理由嵌套需要函数调用?
- 20. javascript函数调用 - 嵌套函数
- 21. 函数内部变量未重新在每个函数调用
- 22. 是否为每个实例重新创建对象属性?
- 23. 嵌套函数:我在这里创建10个函数吗?
- 24. 创建骨干模型嵌套函数
- 25. 创建嵌套模型是否需要新的子类?
- 26. java是否在每次调用新操作符时创建一个新对象
- 27. 使用嵌套函数和.load()函数创建动画循环
- 28. 为每个jQuery调用创建新类是否是最佳实践?
- 29. 采用NG-重复创建嵌套表
- 30. 嵌套函数重复