最近看到一個有關於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方法,此方法返回對象的字符串形式。
