最近看到一个有关于js链式调用的问题,形如add(1)(2)(3)=6,研究了一下在此讲述
我们先来写一个简单的链式调用:
function add(x){
var sum=x;
function tem(y){
sum=sum+y;
return tem;
}
tem.toString=function(){
return sum;
}
return tem;
}
一个简单的链式调用函数到此完成,现在让我们来分析一下这个函数。
在外部调用add(1)(2)(3),此时会将第一个参数1传递给函数add即add(1),
进入到add函数内部,将x赋值给sum,然后继续执行,声明函数tem此时并未执行,
进入return语句,返回tem函数,此时调用tem函数,并将参数2传递给tem,该函数继续
返回tem函数本身,tem函数再次被调用并将参数3传递,直到没有参数可传递,结束函数执行,因为每次
返回的为一个函数,所以要用tostring方法,此方法返回对象的字符串形式。