【发布时间】:2011-07-22 05:16:59
【问题描述】:
function A() {
function B() {
...
}
B();
}
函数 B 是在每次调用 A 时创建的,还是有一些缓存。没有像本地一样:
function A() {
B();
}
function B() {
...
}
显着的性能提升?
这样选择样式是否有效? (在这种情况下,B 只是 A 的辅助函数。)还是应该优先考虑第二个?
为了可读性,应该使用还是避免使用这种样式?
对于本地情况,似乎 FF4 内联 B 并消除了函数调用开销。
其他浏览器呢?
【问题讨论】:
-
在另一个函数中声明一个函数是不好的。在您的第一个示例中, B() 应该是一个表达式。见这里:stackoverflow.com/questions/1013385/…
-
您的测试用例似乎不正确;你实际上并没有执行函数,只是声明它们。结帐jsperf.com/inner-function-optimization。 Chrome 似乎没有优化。我怀疑任何引擎都会。
-
@Matt 哦.. 我忘了给他们打电话。多么愚蠢:(
-
@DanMan 是的,没错。块内的函数声明是不允许的。这与函数内部的函数声明不同。这是因为没有块作用域。浏览器为函数声明模拟块范围确实存在问题,这非常糟糕。但这与函数内部的函数声明无关。
-
@Jesse Hallett:你是对的。看起来我没有区分块和功能。感谢您清除它。
标签: javascript optimization implementation caching