第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

遞歸函數(shù)的問題求大神幫看下!

遞歸函數(shù)的問題求大神幫看下!

winner4265975 2017-03-15 23:49:33
為什么一開始輸出的是1后來變?yōu)??
查看完整描述

3 回答

已采納
?
千秋此意

TA貢獻(xiàn)158條經(jīng)驗(yàn) 獲得超188個(gè)贊

其實(shí)你在問題不在于遞歸,關(guān)于結(jié)果為什么是23456而不是2345正如樓上所說,我來補(bǔ)充下為什么一開始是1后來變?yōu)?,然后結(jié)果是23456吧。

這里主要是涉及到文檔流以及document.open(); document.write(); document.close();這三個(gè)方法的相關(guān)知識(shí),

document.open()這個(gè)方法可以打開一個(gè)文檔流用于接受document.write方法寫入的內(nèi)容,并且(在文檔流已關(guān)閉的情況下)會(huì)清除當(dāng)前的文檔內(nèi)容。

一般很少用到open方法是因?yàn)樵谖臋n流關(guān)閉后再調(diào)用write方法時(shí)瀏覽器會(huì)自動(dòng)調(diào)用open方法打開一個(gè)新的文檔流,但是并不會(huì)自動(dòng)調(diào)用close方法來關(guān)閉文檔流,在文檔流未關(guān)閉的情況下調(diào)用write會(huì)將內(nèi)容寫入到你document.write()語句所在的位置,如果多次調(diào)用則會(huì)依次寫入到前一次調(diào)用寫入的內(nèi)容之后。

然后再來看你的問題,瀏覽器 document.write()語句寫到了函數(shù)a里并且在script標(biāo)簽里直接調(diào)用了函數(shù)a一次,瀏覽器解析HTML生成DOM樹時(shí)碰到script標(biāo)簽會(huì)先執(zhí)行里面的js再繼續(xù)解析下面的html標(biāo)簽,而在解析過程中(即頁面未onload完成時(shí))文檔流是處于未關(guān)閉的狀態(tài)的,此時(shí)調(diào)用函數(shù)a(),執(zhí)行里面的document.write()語句,并不會(huì)打開新的文檔流并且清除當(dāng)前文檔內(nèi)容,所以你就看到了最開始的“1”。

再然后由于你在函數(shù)內(nèi)加了定時(shí)器遞歸調(diào)用函數(shù)a,但是在1000毫秒之后HTML已經(jīng)解析完畢(onload,文檔流已關(guān)閉),此時(shí)第二次調(diào)用了document.write()方法,由于文檔流已關(guān)閉所以瀏覽器自動(dòng)調(diào)用document.open()方法打開了新的文檔流并且清除了當(dāng)前文檔內(nèi)容(即清除了之前的“1”),頁面上能看到的內(nèi)容就變成了“2”,同時(shí)因?yàn)闉g覽器不會(huì)自動(dòng)調(diào)用document.close()方法,所以此時(shí)的文檔流一直處于未關(guān)閉狀態(tài),之后的幾次遞歸調(diào)用函數(shù)里write的i值都不會(huì)清除當(dāng)前內(nèi)容再輸出,而是直接跟在上一次輸出的內(nèi)容之后,等滿循環(huán)完畢后輸出的內(nèi)容就成了“23456”了。

//?如果你的js這么寫就不會(huì)出現(xiàn)23456了,而是會(huì)依次刷新并輸出1、2、3、4、5、6(最后只能看到6)
var?i?=?0;
function?a()?{
????i++;
????document.write(i);
????document.close();
????if?(i?>?5)?{
????????return;
????}
????setTimeout(a,?1000);
}
a();

(最后建議樓主一般情況下不要用document.write方法,特別是調(diào)試的時(shí)候,調(diào)試多用alert和console,純手打望采納=、=)

查看完整回答
2 反對(duì) 回復(fù) 2017-03-16
?
西蘭花偉大炮

TA貢獻(xiàn)376條經(jīng)驗(yàn) 獲得超318個(gè)贊


沒問題啊,調(diào)用函數(shù)后,執(zhí)行了i的+1,然后輸出肯定為1啊,后面經(jīng)過判斷,不符合條件繼續(xù)向下,然后每隔一秒調(diào)用一次a函數(shù),當(dāng)i為5時(shí)依然不符合退出條件,會(huì)再執(zhí)行一次a,先輸出6,再退出執(zhí)行,而i==5,在i等于5時(shí)直接就退出了,沒有6了

查看完整回答
2 反對(duì) 回復(fù) 2017-03-15
?
we456634

TA貢獻(xiàn)3條經(jīng)驗(yàn) 獲得超0個(gè)贊

始輸出的是1后來變?yōu)?

查看完整回答
反對(duì) 回復(fù) 2017-03-16
  • 3 回答
  • 0 關(guān)注
  • 1504 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)