Javascript:var functionName = function(){} vs function functionName(){}的性能

时间:2011-01-20 18:47:04

标签: javascript

  

可能重复:
  Does use of anonymous functions affect performance?

在Javascript中使用函数表达式与声明时,解析和运行时的性能影响(如果有)是什么?

例如,以下两种方式的性能特征和差异是什么:

var functionOne = function() {
    // Some code
}

或:

function functionTwo() {
    // Some code
}

注意:问题不在于声明函数是否更快,而是函数执行。

2 个答案:

答案 0 :(得分:13)

比性能差异更重要的是这两者之间的语义差异。

  • 使用函数声明语句声明的函数(第二个示例)具有将显示在堆栈跟踪等中的名称。
  • 在函数运行中的任何其他语句之前,函数声明语句被“提升”到它们块的顶部并被解释为它们实际出现在那里。

至少在现代运行时环境中,性能差异可能非常小,甚至可以检测到。

答案 1 :(得分:10)

这是一个JSPerf链接,尝试在多个浏览器上进行测试,因为结果往往会有所不同。 在chrome 10中,函数语句得分更高。 http://jsperf.com/fn-expression-vs-statement