网上有很多javascript文章,比较函数声明function foo (){}
和函数表达式var foo = function () {}
。他们通常提到像吊装,条件限制等行为......但我不记得他们中的任何一个谈论性能。有什么区别吗?特别是在ECMA5的严格模式下(如果有任何改变)。
通过性能我当然意味着执行性能(包括查找,范围遍历等)而不是声明性能,尽管这也是一个很好的知识。
答案 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