不同的b/w函数声明和函数表达式在var functionName = function() {} vs函数functionName() {}中描述得很好。
在本文中提到,函数声明是在解析时计算的,函数表达式是在执行阶段计算的。
在bytes.com中,人们提到函数声明比函数表达式更快。
我为此创建了一个基本的测试用例:http://jsperf.com/function-declaration-vs-function-expression
函数声明
function myfunc() {
alert("yo");
}
myfunc();函数表达式
var myfunc = function() {
alert("yo");
}
myfunc();测试表明,函数表达式比函数声明慢90%。
为什么速度有这么大的差别?
编辑
从http://jsperf.com/function-declaration-vs-function-expression的结果来看
在Chrome, IE9, Opera & Safari ->中,函数声明比函数表达式更快
在Firefox, IE7, IE8中,函数表达式比函数声明更快
在IE9中,函数声明更快,而在IE7&8中函数表达式更快。是因为JavaScript引擎在IE9中发生了变化,还是有意这么做的?
发布于 2011-03-25 14:40:36
这必须是一个依赖浏览器的问题。如果javascript是一个表达式而不是一个声明,一些浏览器可能会以不同的方式编译javascript,而有些浏览器可能对它们完全相同。
https://stackoverflow.com/questions/5433883
复制相似问题