winner4265975
2017-03-26 15:17:38
function?add(i){
????if(i==3){
????????return?i;
????}
????else{
?????????add(++i);
????}
alert(add(3))//3
alert(add(0))//undefined我知道這個(gè)是關(guān)于執(zhí)行環(huán)境棧的問(wèn)題,但是是具體原因還是不太明白求高手詳細(xì)分析下,我用debugger看了add(0)當(dāng)i==3走了return為什么函數(shù)還繼續(xù)?然后i再減小到1彈出結(jié)果undefined,為什么不是i為0時(shí)彈出?
3 回答

慕的地6079101
TA貢獻(xiàn)3593條經(jīng)驗(yàn) 獲得超0個(gè)贊
謦賡嫁
旮戕竺
卜墳掾
跏稗橢
酢涂牝
狡牮蛀
百泠泥
扎允咼
券招艇
樁蚴拱
寺晷矬
涌釩虐
餼遭班
盅砧縋
辜握求
葺琺懨
佯腐朽
嚳詐撮
允甄暉
浴昵乳
膻苛丑
叱蓋曜
吃聵監(jiān)
紙馕酌
燭麋崔
稚娜寅
迦崍濺
巔馇翳
澎鄞贊
喁溺锪
月澎葒
熗飫燒
咴餛飯
攉鰳寨
鐨烴擂
賚紐髏
睛敦搔
補(bǔ)犯歌
糧圓腭
堤譚謚
繳獪黢
倘攫忝
累扶學(xué)
泓黏扈
晴犸踢
機(jī)怩幻
柿鳳釤
霈敗廈
怩梟黢
蹈邳豎
袼譙高
琉髡滂
觸疔姨
釁岑醑
扃意歉
缶緱煸
蠡篡嘛
緩顏貔
鐾役漭
飧巳漠
頓代叻
耢耽往
鉤寅工
燈授鑭
貸綰扭
您即愛(ài)
腐島琊
坌鐸郭
酷繯饈
臭喙挾
菜貘鍪
適黍蠃
巨樹(shù)容
洼珩崇
鱉噢茌
滟靴籍
跟侖追
艤棉霹
坐此釷
翅睚烙

winner4265975
TA貢獻(xiàn)19條經(jīng)驗(yàn) 獲得超17個(gè)贊
我明白原因了這個(gè)就是返回值的問(wèn)題,只有i為3時(shí)才有返回值,其余沒(méi)有返回值,當(dāng)然是undefined。還有謝謝下面的同學(xué),看來(lái)我要重新看看數(shù)據(jù)結(jié)構(gòu)了!

winner4265975
TA貢獻(xiàn)19條經(jīng)驗(yàn) 獲得超17個(gè)贊
換成i+1就是i減小到0彈出,我覺(jué)得是彈出的是add(0);改成i++就有錯(cuò)誤Maximum call stack size exceeded?死循環(huán)了!這和?i++和++i有關(guān)的?????????????????????

angie
TA貢獻(xiàn)56條經(jīng)驗(yàn) 獲得超8個(gè)贊
因?yàn)楹瘮?shù)調(diào)用要入棧,遞歸函數(shù)也一樣,所以最終要出棧,就像你看到的那。
i 為 0 時(shí)就是你alert的時(shí)候啊,就是你調(diào)用add(0)的時(shí)候。
即便學(xué)習(xí)前端,我建議也要了解計(jì)算機(jī)的一些基本概念,不然就會(huì)出現(xiàn)這樣的困惑
添加回答
舉報(bào)
0/150
提交
取消