从性能的角度来看函数声明与表达式?

时间:2015-01-28 06:15:31

标签: javascript function ecmascript-5 function-declaration

网上有很多javascript文章,比较函数声明function foo (){}和函数表达式var foo = function () {}。他们通常提到像吊装,条件限制等行为......但我不记得他们中的任何一个谈论性能。有什么区别吗?特别是在ECMA5的严格模式下(如果有任何改变)。

通过性能我当然意味着执行性能(包括查找,范围遍历等)而不是声明性能,尽管这也是一个很好的知识。

2 个答案:

答案 0 :(得分:1)

我在Chrome canary 45和Firefox 37中从JSPerf执行了相同的测试,遗憾的是结果却相反:

function myfunc() {
  alert("yo");
}
myfunc();

Chrome:最快,FF:慢得多

var myfunc = function() {
    alert("yo");
    }

myfunc();

FF:最快,Crome:慢得多

所以,答案是:它取决于浏览器/ JS引擎。

答案 1 :(得分:0)

如果有多次计算函数表达式的可能性,函数声明会更快。例如,在循环中调用的代码中,提升函数仅被评估一次,但每次都会计算一个表达式。除此之外,没有任何有意义的差异。

如果您对JavaScript性能问题有疑问,建议您查看JSPerf。此外,Google会查看某人是否已为您的问题制作了一个,并且在这种情况下他们有:

http://jsperf.com/function-declaration-vs-function-expression/15