3 回答
TA贡献1876条经验 获得超7个赞
这代码简化之后就是:
var test = function (b) {
return 1 + b;
};
var test = function (a) {
this.a = a;
return function (b) {
return this.a + b;
}
}(
function (a, b) {
return a; //-> 自执行匿名函数,这一块就是返回个 1
}(1, 2)
);
//简化
var test = function (a) { //又是一个自执行匿名函数
this.a = a;//a 就是1 this === window
return function (b) {
return this.a + b; //this === window
}
}(1);
//再简化
var test = function (b) {
return 1 + b;
};
console.log(test(4)); //输出 5
TA贡献1804条经验 获得超3个赞
你可以拆成几部分来看:
var funcA = function(a) {
this.a = a;
return function (b) {
return this.a + b;
}
}
var funcAB = function (a, b) {
return a;
}
var test = funcA(funcAB(1, 2))
console.log(test(4));
这里面, funcAB 实际上等同于返回 a,所以又可以精简为:
var test = funcA(1)
test 实际上是接受一个参数,并返回一个匿名函数,而该匿名函数的返回结果为 test的参数与该匿名函数的参数之和。
test(4) = funcA(1)(4) = function(a) {
this.a = a; // 即 funcA 的参数 4
return function (b) { // 此处的b即test的参数
return this.a + b;
}
}
所以最后的结果为 5
TA贡献1934条经验 获得超2个赞
添加回答
举报