从性能的角度来看,函数声明与表达式
Function declaration vs expression from a performance point of view?
网络上有许多JavaScript文章将函数声明function foo (){}
与函数表达式var foo = function () {}
进行比较。他们通常会提到诸如吊装、条件内的行为等......但我不记得他们中的任何一个人谈论过性能。有什么区别吗?特别是在ECMA5的严格模式下(如果这改变了什么)。
我所说的性能当然是指执行性能(包括查找、作用域遍历等),而不是声明性能,尽管这也是一个很好的知识。
在函数表达式可能被多次计算的情况下,函数声明速度更快。例如,在循环中调用的代码中,提升的函数仅计算一次,但每次都会计算表达式。除此之外,没有有意义的区别。
每当你对JavaScript性能问题有疑问时,我建议你查看JSPerf。另外,谷歌看看是否有人已经为您的问题制作了一个,在这种情况下,他们有:
http://jsperf.com/function-declaration-vs-function-expression/15
我在Chrome Canary 45和Firefox 37中从JSPerf执行了相同的测试,可悲的是结果相反:
function myfunc() {
alert("yo");
}
myfunc();
铬:最快,FF:慢得多
var myfunc = function() {
alert("yo");
}
myfunc();
FF:最快,克罗姆:慢得多
所以,答案是:这取决于浏览器/JS引擎。
相关文章:
- 直接在函数声明上使用function.prototype.bind
- 可以Resharper在我的javascript函数声明中添加分号
- 此行是否包含函数声明
- 函数声明与函数表达式之间的性能差异
- 为什么在javascript函数声明中使用逻辑运算符
- 函数声明未定义-原因
- JavaScript执行从函数声明开始,而不是从$(document).ready()开始
- 杰辛特 |传递默认设置 |函数声明和“this”
- 未知的 JavaScript 函数声明模式
- JavaScript 中的函数声明
- 在函数声明而不是运行时分析所有变量
- 命名函数声明有什么好处吗
- 将一个简单的函数声明形成JavaScript中的闭包
- 返回语句后的函数声明全局变量不会被覆盖
- (this)在函数声明之后
- 为什么使用 ||在变量函数声明中
- 为什么要将函数声明分配给命名变量
- 具有相同参数的 Javascript 函数声明
- 从性能的角度来看,函数声明与表达式
- 为什么 Mozilla Javascript 调试器的断点会捕捉到函数声明