可能重复:
JavaScript: var functionName = function() {} vs function functionName() {}
是否有任何适用的原因可以使用var
而不是常规函数定义来声明函数,尤其是在处理闭包时。
显然,在我演示之前,这可能没什么意义,所以我会这样做!
注意:我使用require.js使这一点显而易见
示例A:我通常如何做事
define(function() {
function foo(x) {
return x + 42;
}
function bar(y) {
return y + foo(y);
}
var MyObject = function(config) {
// some sweet stuff
}
MyObject.prototype = {
myFun: function(x) {
return bar(x)
}
}
return MyObject;
})
示例B:我看到的方式
define(function() {
var foo = function(x) {
return x + 42;
}
var bar = function(y) {
return y + foo(y);
}
var MyObject = function(config) {
// some sweet stuff
}
MyObject.prototype = {
myFun: function(x) {
return bar(x)
}
}
return MyObject;
})
我认为两者之间肯定存在一些差异,可能......:)
感谢您的时间和精力!
编辑: 试图以更明智的方式提出这个问题!
答案 0 :(得分:0)
没有真正的收获。示例A中的函数声明更改为函数表达式并提升到闭包的顶部,因此在示例B中的var
声明被提升后,它们看起来与您在第一个示例中定义的相同。 / p>
您拥有的两种形式是函数表达式和函数声明的显式赋值。函数声明变为函数表达式,声明本身被拉到顶部功能(吊装)。
在此处阅读更多内容:http://elegantcode.com/2011/03/24/basic-javascript-part-12-function-hoisting/