实现语法的功能:var a = add(1)(2)(3); //6
function add(a) {
var temp = function(b) {return add(a + b);}
temp.valueOf = temp.toString = function(){return a;};
return temp;
}
var ans = add(1)(2)(3);
alert(ans); // 6
这段代码是别人写的,小弟才疏学浅没看明白,很多地方不知,请大神们帮分析一下,
关于add(a+b)递归糊涂,还有为什么要将temp的valueOf方法改变,这样有什么用等等问题
简单的add(a)返回的事实一个函数add1, 然后add1(a)再继续返回,一直执行到结束。当然在执行过程中你得判断返回的值是一个函数还是一个返回的值。于是就有了使用valueOf来判断返回对象有没有valueOf方法,如果有那么就获得他的原始值,返回他的原始值。或者toString返回字符串。