是否在每次调用时重新评估命名空间函数?

时间:2016-02-28 21:56:43

标签: javascript

在这个例子中:

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中)。

如果没有重新评估,为什么第二种模式会明显快于第一种模式?

1 个答案:

答案 0 :(得分:1)

简短回答:是的。

正如您的问题的评论中所提到的,只要您调用该函数,函数体中的所有内容都会运行。

第二个例子更快,因为它只需要调用先前初始化的函数,而在第一个例子中,代码必须每次重新初始化函数。基本上,每次调用foo()时都必须重复工作,这会占用额外的处理时间。