亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

閉包 運行結果,麻煩給出詳解,謝謝!

閉包 運行結果,麻煩給出詳解,謝謝!

function fun(n,o) {? console.log(o)? return {? ? fun:function(m){? ? ? return fun(m,n);? ? }? };}var a = fun(0); ?a.fun(1); ?a.fun(2); ?a.fun(3);var b = fun(0).fun(1).fun(2).fun(3);var c = fun(0).fun(1); ?c.fun(2); ?c.fun(3);//答案為//a: undefined,0,0,0//b: undefined,0,1,2//c: undefined,0,1,1
查看完整描述

1 回答

已采納
?
stone310

TA貢獻361條經驗 獲得超191個贊

var a = fun(0); ?a.fun(1); ?a.fun(2); ?a.fun(3);

1、fun(0)時,第一個參數n為0,第二個參數o未設置,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),執行得出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),執行得出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),執行得出console.log(0)

var b = fun(0).fun(1).fun(2).fun(3);

當執行到fun(0)時,與前面a一樣,第二個參數未設置,console.log(o)為undefined;return值為:

?{
????fun:function(m){
??????return?fun(m,n);???//n為0
????}

當執行到fun(0).fun(1)時,m為1,代入上方return,得出新的return值為fun(1,0),執行fun(1,0),console.log(0),return值為:

???//fun(1,0)的return值為:
???{
????fun:function(m){
??????return?fun(m,n);??//n為1
????}

當執行到fun(0).fun(1).fun(2)時,m為2,代入上方return,得出新的return值為fun(2,1),執行fun(2,1),console.log(1),return值為:

???//fun(2,1)的return值為:
???{
????fun:function(m){
??????return?fun(m,n);??//n為2
????}

當執行到fun(0).fun(1).fun(2).fun(3)時,m為3,代入上方return,得出新的return值為fun(3,2),執行fun(3,2),console.log(2);

var c = fun(0).fun(1); ?c.fun(2); ?c.fun(3);

當fun(0)時,與前面b一致,undefined;

當fun(0).fun(1)時,與前面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);

得出結果console.log(1)


查看完整回答
2 反對 回復 2016-10-10
  • 1 回答
  • 0 關注
  • 2046 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號