是否缓存了本地函数声明?

Ray*_*nos 7 javascript optimization implementation caching

function A() {
     function B() {
          ...
     }        
     B();
}
Run Code Online (Sandbox Code Playgroud)

B每次A调用创建的函数还是有一些缓存.不是像当地人一样:

function A() {
    B();
}
function B() {
    ...
}
Run Code Online (Sandbox Code Playgroud)

显着的性能提升?

这样做风格选择有效吗?(B在这种情况下,它只是一个辅助函数A.)或者第二个是否应该受到速度的青睐?

是否应该使用或避免使用此样式以提高可读性?

基准.

似乎FF4内联B本地案例并删除函数调用开销.

其他浏览器怎么样?

Eri*_*lun 4

在 JS 中声明内部函数的目的可能是在词法上绑定到外部函数的局部变量/参数。将其移出为顶级功能违背了这一目的。

回答这个问题:是的,至少在理论上,每次都会创建内部函数,这就是您在编写代码时应该如何看待它,但是智能优化器仍然可以将其转换为顶级函数,即使你有词汇依赖性。如果这是一个微观优化,我不会打扰,因为拥有内部函数也可以达到可读性和声明你的意图的目的。