为什么将一个函数分配给var与简单定义它不同?

时间:2013-05-28 14:44:41

标签: javascript

所以我正准备在我们每个不断增长的全局(叹息)列表中添加一个新函数,并注意到最后一个用户使用了一个简单function a(){}的变量赋值。

function aFunction(){
    return null;
}

var bFunction = function(){
    return null;
}

我创建了一个test,看它是否有所作为;它确实如此,但却是一个相互冲突的。 (chrome支持简单的功能,而firefox则是变量赋值)。

Firefox :功能创建(90 +%慢)/使用变量赋值创建(最快)

Chrome :功能创建(最快)/使用变量分配创建(70 +%慢)

我理解这是微不足道的,但有没有任何理由存在差异,是否有更好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

两者之间的一个区别是它们在浏览器中的行为方式。

无论在代码中调用哪个函数,在第一种情况下定义函数都会有效。在第二种情况下,如果您在定义之前尝试调用它,则会抛出错误。

这个答案更详细地解释了:What is the difference between a function expression vs declaration in JavaScript?

那么哪种方式更可取取取决于用例。

至于浏览器速度的差异,我想这是因为浏览器解析javascript的方式不同。