可能重复:
Javascript: var functionName = function() {} vs function functionName() {}
在Javascript中我可以写:
function TheFunc(arg) {
...
}
或
TheFunc = function(arg) {
...
}
或
TheFunc : function(arg) {
...
}
真正的区别是什么?我何时应该使用哪种?
答案 0 :(得分:0)
未提及的第一和第二语法之间的一个区别(不在链接的问题中)是如果函数返回一个函数对象,使用'TheFunc'的结果将是完全不同的
TheFunc = function(arg) {
return function(x) {
return arg+x;
}
}(5);
res = TheFunc(2); // res == 7
使其等同于
TheFunc = function(5) {
return function(x) {
return 5+x;
}
}
res = TheFunc(2); // res == 7
因为该功能是匿名的。而
function TheFunc(arg) {
return function(x) {
return arg+x;
}
}
byFive = TheFunc(5);
res = byFive(2); // res == 7
会有相同的结果,但可以使函数工厂重复使用。
实际用途在这些示例中并不是那么清楚,但是它可以是必不可少的,例如,在基于回调的调用构建复杂的钩子系统的情况下 - 例如带有插件的系统:
// state object
function state(args) {
this.parse = function(data){
data = this.pre_parser(data);
// go on transforming data
return data;
}
}
state.prototype.pre_parser_factory = function(options){
...
}
var st = new state(args);
async_call( function(data, options){
st.pre_parser = st.pre_parser_factory(options);
res = st.parse(data);
})