今天有群里的朋友面试完了回来问了我一道题。代码如下
var test = (function(a) {
this.a = a;
return function(b) {
return this.a + b;
}
} (function(a, b) {
return a;
}(1, 2)));
console.log(test(4)); //输出什么
这道题还算比较基础,答案应该是5,下面的立即执行函数返回了一个值1,又作为参数传给了test对应的立即执行函数,又由于该函数返回了一个闭包,所以this.a得以保存,依然是b,此时调用test(4)相当于是给闭包函数传参4,所以b=4,结果1+4=5。
个人理解,如果大家有其他的面试题或者对这道题还有别的看法欢迎与我分享、交流!