在这个例子中:
function foo () {
function bar () {
return 'foo bar';
}
bar();
}
foo();
对于bar
被调用的每个 x 次,foo
是否会重新评估?
相反:
function bar () {
return 'foo bar';
}
function foo () {
bar();
}
foo();
此benchmark表示后一个示例的速度提高了+/- 1.6倍(在Chrome中)。
如果没有重新评估,为什么第二种模式会明显快于第一种模式?
答案 0 :(得分:1)
简短回答:是的。
正如您的问题的评论中所提到的,只要您调用该函数,函数体中的所有内容都会运行。
第二个例子更快,因为它只需要调用先前初始化的函数,而在第一个例子中,代码必须每次重新初始化函数。基本上,每次调用foo()
时都必须重复工作,这会占用额外的处理时间。