引入:操場(chǎng)一圈是400米,在運(yùn)動(dòng)會(huì)的時(shí)候,2000米的跑步比賽,我們需要繞操場(chǎng)跑5圈,如下圖:
示意圖
這就是

一個(gè)循環(huán),那么,在這個(gè)過(guò)程中,其實(shí)我們動(dòng)作只是跑一圈,剩下的過(guò)程只是在重復(fù)。從計(jì)算機(jī)的角度來(lái)想,我們可不可以設(shè)定一個(gè)程序,讓他自動(dòng)跑5圈呢?可以的,用咱們今天要學(xué)習(xí)的循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)的意義就是讓代碼重復(fù)執(zhí)行。
一、while循環(huán)結(jié)構(gòu)
語(yǔ)法:
while(條件語(yǔ)句){
? ? 條件成立執(zhí)行的代碼
}?
例:對(duì)女朋友說(shuō)5句我愛(ài)你
// 那么既然是循環(huán),咱們需要設(shè)定幾個(gè)條件,首先是從哪開(kāi)始,每完成一次要進(jìn)行計(jì)數(shù),完成多少次停止。
vari=1;
while(i<=10){
document.write("我愛(ài)你!");
i++;
}
while循環(huán)結(jié)構(gòu)的具體流程:
while循環(huán)的運(yùn)行流程

while循環(huán)需要我們?cè)谘h(huán)外就將變量聲名好,在執(zhí)行代碼的過(guò)程中,一定要讓變量進(jìn)行變化,否則這個(gè)循環(huán)就會(huì)無(wú)休止的進(jìn)行下去。
不會(huì)停止的循環(huán)叫做死循環(huán),程序一直不會(huì)停止,cpu占用率越來(lái)越高,很容易造成系統(tǒng)崩潰。所以我們?cè)趯?xiě)代碼的時(shí)候一定避免寫(xiě)成死循環(huán)。
例:利用while循環(huán)中的變量輸出數(shù)字1~5
vari=1;
while(while<=5){
document.write(i);
i++;
}
二、do while循環(huán)結(jié)構(gòu)
do while 循環(huán)是while循環(huán)的變異體。循環(huán)流程相似,唯一不同的地方在于do while循環(huán)會(huì)先執(zhí)行一次,不管條件是否成立,先執(zhí)行一次,后面的流程和while循環(huán)一樣。
三、for循環(huán)結(jié)構(gòu)
語(yǔ)法:
for(聲明變量并賦初始值;條件表達(dá)式;每重復(fù)一次后變量的變化規(guī)律){
?? 重復(fù)執(zhí)行的代碼塊
}
# 在語(yǔ)法中的聲明變量并賦初始值,就是從哪里開(kāi)始重復(fù);條件表達(dá)式可以限定重復(fù)在什么時(shí)候停止(當(dāng)條件不成立的時(shí)候);通過(guò)每次重復(fù)變量的變化和條件表達(dá)式可以知道要重復(fù)多少次
例:輸出10句“我愛(ài)你”
for(vari=1;i<=10;i++){
? ? document.write("我愛(ài)你");
}
循環(huán)執(zhí)行過(guò)程分析:
首先i=1;然后進(jìn)行條件判斷i<=10;條件成立,所以運(yùn)行了大括號(hào)中的代碼-----第一次執(zhí)行接下來(lái)i++;然后i=2;再進(jìn)行條件判斷i<=10;條件成立,所以又運(yùn)行了大括號(hào)中的代碼------第二次執(zhí)行i++;i=3;條件判斷i<=10;條件成立,再次運(yùn)行------第三次執(zhí)行i++;i=4;條件判斷i<=10;條件成立,再次運(yùn)行------第四次運(yùn)行。。。
vararr=[10,20,30,40,50];
varsum=0;
for(variinarr) {
? ? sum+=arr[i];
}
alert(sum);
for循環(huán)中的初始值和變化可以不放在小括號(hào)中
vari=1;
for(;i<=5;){
? ? document.write(i);
? ? i++;
}
執(zhí)行流程是一樣的,只是寫(xiě)法不一樣。
在循環(huán)中,變量i的變化規(guī)律可以不是遞增,也可以遞減,也可以不是遞增1。。。總而言之,變量i的變化規(guī)律可以自定義。
例:求出1~10之間所有單數(shù)的和。
varsum=0;
for(vari=1;i<=10;i+=2){
? ? sum+=i;
}
alert(sum);// 25
for循環(huán)的運(yùn)行流程

循環(huán)中的跳轉(zhuǎn)關(guān)鍵字
在循環(huán)有兩個(gè)關(guān)鍵字可以改變循環(huán)執(zhí)行的流程。
continue關(guān)鍵字,可以跳過(guò)當(dāng)前這次的循環(huán),直接進(jìn)行下一次的循環(huán)。
for(vari=1;i<=5;i++){
? ? if(i==3){
? ? ? ? continue;// 當(dāng)i=3的時(shí)候,直接進(jìn)行下一次的循環(huán)
? ? }
? ? document.write(i);
}
// 最后結(jié)果是1245
break關(guān)鍵字,可終止循環(huán),直接讓整個(gè)循環(huán)結(jié)束運(yùn)行。
for(vari=1;i<=5;i++){
? ? if(i==3){
? ? ? ? break;// 當(dāng)i=3的時(shí)候,直接結(jié)束整個(gè)循環(huán)的運(yùn)行
? ? }
? ? document.write(i);
}
// 最后結(jié)果是12
運(yùn)行流程如下圖所示:


案例:
入職薪水10K,每年漲幅5%,50年后工資多少?
打印100以內(nèi) 7的倍數(shù)
打印100以內(nèi)的奇數(shù)
循環(huán)的嵌套
讓一段重復(fù)執(zhí)行代碼重復(fù)執(zhí)行,也就是設(shè)定一個(gè)大程序,讓多個(gè)人跑5圈。
for(var i=1;i<=5;i++){
? ? for(var j=1;j<=5;j++){
? ? ? ? document.write("第" + i + "個(gè)人跑第" + j + "圈<br>");
? ? }
}