1 回答

TA貢獻(xiàn)361條經(jīng)驗(yàn) 獲得超191個(gè)贊
var a = fun(0); ?a.fun(1); ?a.fun(2); ?a.fun(3);
1、fun(0)時(shí),第一個(gè)參數(shù)n為0,第二個(gè)參數(shù)o未設(shè)置,console.log(o)為undefined,return值為:
?{ ????fun:function(m){ ??????return?fun(m,n);???//n為0 ????}
2、a.fun(1);m=1,代入上方return,得出新的return值為fun(1,0),執(zhí)行得出console.log(0),return值為:
?//fun(1,0)return值為: ?{ ????fun:function(m){????? ??????return?fun(m,n);???//n為0 ????}
3、a.fun(2);m=2,代入上方return,得出新的return值為fun(2,0),執(zhí)行得出console.log(0),return值為:
?//fun(2,0)return值為: ?{ ????fun:function(m){????? ??????return?fun(m,n);???//n為0 ????}
4、a.fun(3);m=3,代入上方return,得出新的return值為fun(3,0),執(zhí)行得出console.log(0)
var b = fun(0).fun(1).fun(2).fun(3);
當(dāng)執(zhí)行到fun(0)時(shí),與前面a一樣,第二個(gè)參數(shù)未設(shè)置,console.log(o)為undefined;return值為:
?{ ????fun:function(m){ ??????return?fun(m,n);???//n為0 ????}
當(dāng)執(zhí)行到fun(0).fun(1)時(shí),m為1,代入上方return,得出新的return值為fun(1,0),執(zhí)行fun(1,0),console.log(0),return值為:
???//fun(1,0)的return值為: ???{ ????fun:function(m){ ??????return?fun(m,n);??//n為1 ????}
當(dāng)執(zhí)行到fun(0).fun(1).fun(2)時(shí),m為2,代入上方return,得出新的return值為fun(2,1),執(zhí)行fun(2,1),console.log(1),return值為:
???//fun(2,1)的return值為: ???{ ????fun:function(m){ ??????return?fun(m,n);??//n為2 ????}
當(dāng)執(zhí)行到fun(0).fun(1).fun(2).fun(3)時(shí),m為3,代入上方return,得出新的return值為fun(3,2),執(zhí)行fun(3,2),console.log(2);
var c = fun(0).fun(1); ?c.fun(2); ?c.fun(3);
當(dāng)fun(0)時(shí),與前面b一致,undefined;
當(dāng)fun(0).fun(1)時(shí),與前面b一致,console.log(0);
c=fun(0).fun(1);return為:
???{ ????fun:function(m){ ??????return?fun(m,n);??//n為1 ????}
因此c.fun(2)就是fun(0).fun(1).fun(2),與前面b一致,console.log(1);
因此c.fun(3)就是fun(0).fun(1).fun(3),m=3,代入上方return,得出新的retrun:fun(3,1);
得出結(jié)果console.log(1)
添加回答
舉報(bào)