/*
* 題:
* 向頁(yè)面輸出連續(xù)的數(shù)字
*
* 先不考慮連續(xù)輸出數(shù)字俭尖,首先考慮的是向頁(yè)面輸出的話,在js中應(yīng)該用哪個(gè)方法
* 要使用的是document.write()這個(gè)方法娜亿,這個(gè)在write()括號(hào)中輸出文字或數(shù)字后偷拔,會(huì)在html的<body>中輸出文字或數(shù)字
*
*/
// document.write(1);
// document.write(2);
// 效果自己創(chuàng)建一個(gè)項(xiàng)目去試試
/
/*
* 上面這樣寫(xiě)之后炭分,在html中所展現(xiàn)的是‘12’桃焕,這樣的話不是很好的辨認(rèn),也不是我們所需要的欠窒,我們所需要的是1占一行覆旭,
* 2占一行這樣排列退子,所以我們需要它們換行
* 那換行怎么做呢岖妄?
* js中‘\n’這個(gè)的確是換行型将,對(duì)于write(1)來(lái)說(shuō)這個(gè)‘\n’來(lái)說(shuō)是沒(méi)有任何作用的,因?yàn)檫@個(gè)對(duì)于string來(lái)說(shuō)可能是很有用的荐虐,
* 但write(1)可不行七兜,得使用
這個(gè)換行標(biāo)簽,因?yàn)閣rite(1)是向<body>內(nèi)輸出福扬,在body中是需要寫(xiě)標(biāo)簽的腕铸,
* 所以在換行這個(gè)上只用
,不能使用‘\n’铛碑。
* 格式請(qǐng)看下面:
*/
// document.write(1 + '<br>');
// document.write(2 + '<br>');
// document.write(3 + '<br>');
// ......
/
/*
* 接下來(lái)要考慮的是如何連續(xù)輸出狠裹??
* 對(duì)于連續(xù)輸出的想法是不斷的重復(fù)汽烦,這時(shí)會(huì)想到一個(gè)就是不斷復(fù)制粘貼 document.write(1 + '
');涛菠,這樣雖然能做到連續(xù)輸出,
* 但是撇吞,這樣寫(xiě)會(huì)不斷的手動(dòng)復(fù)制俗冻,粘貼完后還的保存、運(yùn)行牍颈,這樣不符合程序運(yùn)行的規(guī)則迄薄。
*
* 在js中有個(gè)語(yǔ)句可以解決這個(gè)問(wèn)題,這個(gè)語(yǔ)句就是 while循環(huán) 語(yǔ)句
* while語(yǔ)句:
* 通過(guò)循環(huán)語(yǔ)句可以反復(fù)的執(zhí)行一段代碼多次煮岁;
*
* while循環(huán):
* - 語(yǔ)法:
* while(條件表達(dá)式){
* 語(yǔ)句...
* }
* - while語(yǔ)句在執(zhí)行時(shí)讥蔽,先多條件表達(dá)式進(jìn)行求值判斷,如果值為true画机,則執(zhí)行循環(huán)體勤篮,循環(huán)體執(zhí)行完畢以后,繼續(xù)對(duì)表達(dá)式進(jìn)行判斷色罚,
* 如果為true碰缔,則繼續(xù)執(zhí)行循環(huán)體,以此類推戳护;
* 如果值為false金抡,則終止循環(huán)體;
* ********************************
* 這里需要注意一個(gè)寫(xiě)法腌且,這個(gè)寫(xiě)法會(huì)對(duì)我們的程序造成運(yùn)行負(fù)擔(dān)梗肝,也對(duì)用戶體驗(yàn)造成困擾,這種寫(xiě)法我們叫它為 死循環(huán)铺董;
* 就是下面這種寫(xiě)法巫击,如果自己想嘗試一下活不下心寫(xiě)了禀晓,那么恭喜你中大獎(jiǎng)了,你會(huì)發(fā)現(xiàn)這個(gè)工具一直彈出窗口坝锰。
* 記住要想測(cè)試不要用下面的方法粹懒,就算你把a(bǔ)lert(n++ +'
');這個(gè)注釋掉了,你會(huì)發(fā)現(xiàn)開(kāi)發(fā)工具會(huì)死掉顷级,無(wú)論你是重啟多少次電腦或者開(kāi)發(fā)工具也是一樣的
* 這時(shí)不要緊張凫乖,不要怕,這不是什么天大的事弓颈,天塌不下來(lái)帽芽,電腦系統(tǒng)也不會(huì)重裝,你可以使用以下幾個(gè)方法解決這個(gè)問(wèn)題:
*
* Mac系統(tǒng)下:
* 不論你使用了什么HTML開(kāi)發(fā)工具造成這樣的問(wèn)題翔冀,你只需要在電腦文件夾中找到你使用的開(kāi)發(fā)工作創(chuàng)建的項(xiàng)目文件夾导街,找到你使用的文件夾
* 然后,使用Xcode打開(kāi)造成問(wèn)題的html文件或者js文件纤子,打開(kāi)后把while代碼塊注釋掉搬瑰,再然后就是重新啟動(dòng)你的HTML開(kāi)發(fā)工具。
*
* win系統(tǒng)下:
* 不論你使用了什么HTML開(kāi)發(fā)工具造成這樣的問(wèn)題计福,你只需要在電腦文件夾中找到你使用的開(kāi)發(fā)工作創(chuàng)建的項(xiàng)目文件夾跌捆,找到你使用的文件夾
* 然后,系統(tǒng)帶有可以寫(xiě)腳本的軟件象颖,應(yīng)該是記事本具體自己去操作佩厚,只要能打開(kāi)造成問(wèn)題的html文件或者js文件,并且能修改和保存就行说订,
* 打開(kāi)后把while代碼塊注釋掉抄瓦,再然后就是重新啟動(dòng)你的HTML開(kāi)發(fā)工具。
*
* ps:他大爺?shù)奶绽洌瑒倓傋约涸趍ac系統(tǒng)下測(cè)試的時(shí)候钙姊,習(xí)慣性寫(xiě)了alert()結(jié)果程序卡死,開(kāi)發(fā)工具卡死埂伦,沒(méi)辦法只用Xcode打開(kāi)問(wèn)題的html文件煞额,然后注釋掉
* while代碼塊后,重啟開(kāi)發(fā)工具后才好沾谜;自己把自己惡心了一把膊毁。
*/
// 死循環(huán):
//var n = 1;
//while (true){
// alert(n++ +'<br>');
//}
/
/*
* 雖然上面注釋中已經(jīng)提示過(guò)不要這么寫(xiě),但是我相信一定有人不信這個(gè)邪非要這么寫(xiě)基跑。
* 可以婚温,不過(guò),得加一句代碼媳否,那就是 break栅螟;
*
* break:結(jié)束語(yǔ)句或叫退出語(yǔ)句
* 加上這個(gè)就不會(huì)出現(xiàn)這個(gè)問(wèn)題了荆秦,但是while只會(huì)執(zhí)行一次
*
*/
// var n = 1;
// while (true){
// alert(n++ +'<br>');
// break;
// }
/
/*
* 如果想執(zhí)行多次,又不想出現(xiàn)死循環(huán)力图,那該怎么寫(xiě)那步绸??搪哪?
* if判斷靡努,對(duì)坪圾,我們需要在while代碼塊中加一個(gè) if判斷就可以實(shí)現(xiàn)了,如下面代碼一樣:
*/
// var n = 0;
// while (true){
// document.write(n++ +'<br>');
// if (n == 10) {
// break;
// }
// }
/
/*
* 這樣就可以有效的避免死循環(huán)晓折,又能達(dá)到我們的要求執(zhí)行多次。
* 這樣寫(xiě)看起來(lái)挺好兽泄,但是漓概,感覺(jué)代碼有點(diǎn)多了,多的是if判斷病梢,那怎么才能不使用if判讀就行實(shí)現(xiàn)執(zhí)行多次哪胃珍?
* 首先,我們需要把while(true)中的true給去掉蜓陌,這時(shí)你會(huì)覺(jué)得去掉了if和true觅彰,那該怎么寫(xiě)?钮热?
* 接下來(lái)就開(kāi)始寫(xiě)了填抬,
* 第一,把true去掉
* 第二隧期,把if判斷條件復(fù)雜或者寫(xiě)到while表達(dá)式中飒责,也就是true原來(lái)的位置里
* 第三,把等等于換成大于等于
* 第四仆潮,把break去掉
* 這樣就可以精簡(jiǎn)掉幾句代碼
*/
//1.創(chuàng)建并初始化一個(gè)變量
var n = 1;
//2.在循環(huán)中設(shè)置一個(gè)條件表達(dá)式
while(n <= 10) {
//3.定義一個(gè)更新表達(dá)式宏蛉,每次更新初始化變量
document.write(n++ + '<br>');
//這三個(gè)條件缺一不可
}
/
/*
* 接下來(lái)在說(shuō)一個(gè)while的近親
*
* do...while循環(huán)
* - 語(yǔ)法
* do{
* 語(yǔ)句...
* }while(條件表達(dá)式)
*
* - 執(zhí)行流程:
* do...while語(yǔ)句在執(zhí)行時(shí),會(huì)先執(zhí)行do的循環(huán)體性置,當(dāng)do循環(huán)體執(zhí)行完畢以后拾并,再對(duì)while后的條件表達(dá)式進(jìn)行判斷
* 如果結(jié)果為true,則繼續(xù)執(zhí)行do循環(huán)體鹏浅,執(zhí)行完畢繼續(xù)對(duì)while后的條件表達(dá)式進(jìn)行判斷嗅义,以此類推。
* 如果結(jié)果為false篡石,則終止循環(huán)芥喇。
* 說(shuō)完了do循環(huán)的執(zhí)行流程,接下來(lái)說(shuō)一下while的執(zhí)行流程凰萨,然后在看一下do循環(huán)和while循環(huán)的區(qū)別在哪里继控?械馆?
* - while執(zhí)行流程:
* while (條件表達(dá)式)語(yǔ)句在執(zhí)行時(shí),會(huì)先對(duì)while后的條件表達(dá)式進(jìn)行判斷武通,如果結(jié)果為true霹崎。則執(zhí)行while后面的循環(huán)體,
* 直到結(jié)果為false時(shí)冶忱,循環(huán)體才會(huì)終止循環(huán)尾菇;
*
* - do與while的區(qū)別:
* do循環(huán)是先執(zhí)行循環(huán)體,然后執(zhí)行對(duì)while條件表達(dá)式進(jìn)行判斷囚枪,如果結(jié)果為true派诬,則繼續(xù)執(zhí)行do循環(huán)體。
* 還有要注意的是do循環(huán)是先執(zhí)行循環(huán)體链沼,然后才會(huì)對(duì)while的條件表達(dá)式進(jìn)行判斷默赂,也就是說(shuō)第一次執(zhí)行時(shí),不論while條件表達(dá)式的值是否為true括勺,
* 都會(huì)輸出do循環(huán)體內(nèi)的語(yǔ)句缆八。
*
* while循環(huán)是先對(duì)條件表達(dá)式進(jìn)行判斷,如果結(jié)果為true疾捍,才會(huì)繼續(xù)執(zhí)行循環(huán)體代碼塊奈辰。
* while循環(huán)在沒(méi)有對(duì)條件表達(dá)式進(jìn)行判斷時(shí),循環(huán)體代碼塊是不會(huì)先執(zhí)行的乱豆。
*
* - 總結(jié):總來(lái)說(shuō)前者是先執(zhí)行循環(huán)體代碼塊奖恰,然后才會(huì)對(duì)while的條件表達(dá)式進(jìn)行判斷,而while是先進(jìn)行對(duì)條件表達(dá)式判讀咙鞍,然后才是執(zhí)行循環(huán)體代碼塊房官。
*/
var i = 1
do {
document.write(i++ + '- <br>');
} while (i <= 10);
/
/*
* 最后再次提醒,在寫(xiě)循環(huán)時(shí)一定要避免死循環(huán)续滋,除非必要情況翰守,一定不要寫(xiě)。不然會(huì)對(duì)程序造成崩潰疲酌,內(nèi)存也會(huì)崩潰
*/