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

问题描述 投票:0回答:2

网络上有很多 javascript 文章将函数声明

function foo (){}
与函数表达式
var foo = function () {}
进行比较。他们通常会提到诸如提升、条件中的行为等……但我不记得他们中有人谈论过性能。有什么区别吗?特别是在 ECMA5 的严格模式中(如果这改变了什么)。

我所说的性能当然是指执行性能(包括查找、作用域遍历等)而不是声明性能,尽管这也是一个值得了解的事情。

javascript function ecmascript-5 javascript-function-declaration
2个回答
1
投票

在函数表达式可能被多次求值的情况下,函数声明速度更快。例如,在循环中调用的代码中,提升的函数仅计算一次,但每次都会计算表达式。除此之外,没有任何有意义的区别。

每当您对 JavaScript 性能问题有疑问时,我建议您查看 JSPerf。另外,谷歌看看是否有人已经为你的问题制作了一个,在这种情况下他们有:

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


0
投票

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

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

Chrome:最快,FF:慢得多

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

myfunc();

FF:最快,Crome:慢得多

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

© www.soinside.com 2019 - 2024. All rights reserved.