循環(huán)語(yǔ)句是什么
循環(huán)語(yǔ)句就是重復(fù)執(zhí)行指定語(yǔ)句缎讼。js有5種循環(huán)語(yǔ)句:
- while
- Do / while
- for
- For / of
- For / in
最常見(jiàn)的用途就是迭代數(shù)組。
計(jì)數(shù)器變量
循環(huán)就是重復(fù)做岸夯。但是程序是如何實(shí)現(xiàn)重復(fù)做的呢俄认?它的實(shí)現(xiàn)原理是什么?
先看一個(gè)例子
for ( let count = 0; count < 5; count++){
console.log(count)
}
-
let count = 0
初始化變量 => 循環(huán)的起點(diǎn) -
count < 5
檢測(cè)變量 => 循環(huán)的終點(diǎn)锥咸,控制是否執(zhí)行循環(huán)體撼嗓。 -
count++
更新變量 => 控制循環(huán)迭代
這個(gè)變量被稱(chēng)為“計(jì)數(shù)器變量”或"循環(huán)變量"柬采。大多數(shù)循環(huán)都有某種形式的計(jì)數(shù)器變量。記浊揖:
對(duì)循環(huán)變量的三個(gè)關(guān)鍵操作
初始化
檢測(cè)
更新
計(jì)數(shù)器變量在:
循環(huán)開(kāi)始前:計(jì)數(shù)器變量會(huì)被初始化
循環(huán)迭代前:會(huì)測(cè)試計(jì)數(shù)器變量的值
循環(huán)結(jié)束時(shí):更新計(jì)數(shù)器變量
while循環(huán)
定義
while循環(huán)是先測(cè)試循環(huán)表達(dá)式的循環(huán)粉捻。(while 語(yǔ)句創(chuàng)建一個(gè)循環(huán),測(cè)試循環(huán)表達(dá)式
的結(jié)果為真時(shí)重復(fù)執(zhí)行語(yǔ)句)
語(yǔ)法
initialize
while ( expression ){ //循環(huán)表達(dá)式
statement //循環(huán)體
increment //必須是由副作用的表達(dá)式振湾,如賦值或++杀迹、--
}
- while: 引入循環(huán)表達(dá)式||標(biāo)記循環(huán)結(jié)束
- Expression : 循環(huán)表達(dá)式
- 如果是假值則解析器會(huì)跳過(guò)循環(huán)體亡脸,這意味著循環(huán)體可能一次都不會(huì)執(zhí)行押搪。
- 如果是真值,則解析器會(huì)執(zhí)行語(yǔ)句浅碾,然后再次求值表達(dá)式大州。
- statement:循環(huán)體
示例
let n = 0;
while (n < 3) {
n++;
}
console.log(n);// expected output: 3
注意事項(xiàng)
- while循環(huán)只會(huì)重復(fù)執(zhí)行表達(dá)式后面的一條語(yǔ)句
let n = 10
while ( --n > 0)
console.log('hello' + n)
console.log('hi')
- 求值表達(dá)式必須要計(jì)算出fasle,否則while(true)會(huì)創(chuàng)造一個(gè)死循環(huán)
let count = 0 //①變量count從0開(kāi)始
while ( count < 10 ){ //②表達(dá)式求值為true就執(zhí)行循環(huán)體④再次求值表達(dá)式
console.log( count )
count++ //③每運(yùn)行一次循環(huán)體count就增一次
}
- 常見(jiàn)的計(jì)數(shù)器變量的名字有:
count
垂谢、i
厦画、j
、k
do / while
do / while 循環(huán)后測(cè)試循環(huán)表達(dá)式的循環(huán)滥朱。這意味著循環(huán)體至少會(huì)執(zhí)行一次根暑。
語(yǔ)法
do
statement
while ( expression );
do {
statement
} while ( expression );
- do: 標(biāo)記循環(huán)開(kāi)始
- statement: 循環(huán)體
- while: 標(biāo)記循環(huán)結(jié)束||引入循環(huán)表達(dá)式
- expression: 循環(huán)表達(dá)式
示例
let result = '';
let i = 0;
do {
i = i + 1;
result = result + i;
} while (i < 5);
console.log(result);
// expected result: "12345"
for循環(huán)
語(yǔ)法
for ( 變量聲明; 條件表達(dá)式; 賦值表達(dá)式){
//循環(huán)體
}
- 變量聲明:在循環(huán)開(kāi)始前設(shè)置的普通變量,通常是一個(gè)數(shù)徙邻,用于設(shè)置循環(huán)的起點(diǎn)排嫌。
- 條件表達(dá)式:控制是否執(zhí)行循環(huán)體,也就是指定循環(huán)的終點(diǎn)缰犁。
- 賦值表達(dá)式:每次循環(huán)體執(zhí)行后執(zhí)行的代碼淳地,用于更新計(jì)數(shù)器變量的值怖糊。(必須是由副作用的表達(dá)式)
示例:
for ( let i = 0; i < 5; i++){
console.log(i)
}
-
let i = 0
初始化計(jì)數(shù)器變量,在循環(huán)開(kāi)始前執(zhí)行颇象,且只執(zhí)行一次伍伤。 -
i < 5
檢測(cè)計(jì)數(shù)器變量,求值結(jié)果為真則執(zhí)行循環(huán)體遣钳,否則跳過(guò)循環(huán)體扰魂。 -
i++
更新計(jì)數(shù)器變量 - 重復(fù)步驟2
作業(yè)
-
寫(xiě)一個(gè)水果超市的價(jià)格查詢(xún)程序: 蘋(píng)果 香蕉 火龍果 橙子 榴蓮等
輸入一個(gè)“蘋(píng)果” 返回=> 3.6 / 斤
使用prompt()設(shè)置行數(shù)、列數(shù)耍贾、和符號(hào)輸出下面的圖形
*****
*****
*****
*****
*****
-
向控制臺(tái)輸出一個(gè)口字形狀的星號(hào)
***** * * * * * * *****
-
向控制臺(tái)輸出下面的圖形
* ** *** **** *****
-
向控制臺(tái)輸出下面的圖形
***** **** *** ** *
向控制臺(tái)輸出下面的圖形
*
**
***
****
*****
- 向控制臺(tái)輸出下面的圖形
*****
****
***
**
*
- 向控制臺(tái)輸出下面的圖形
*
**
* *
* *
* *
******
- 向控制臺(tái)輸出下面的圖形
*
***
*****
*******
*********
- 向控制臺(tái)輸出下面的圖形
*********
*******
*****
***
*
- 向控制臺(tái)輸出下面的圖形
*
* *
* *
* *
*********
- 向控制臺(tái)輸出下面的圖形
*
***
*****
*******
*********
*******
*****
***
*
- 向控制臺(tái)輸出下面的圖形
*
* *
* *
* *
* *
* *
* *
* *
*
- 向控制臺(tái)輸出下面的圖形
*********
*******
*****
***
*
***
*****
*******
*********
- 向控制臺(tái)輸出下面的圖形
*
**
***
****
*****
****
***
**
*
- 向控制臺(tái)輸出下面的圖形
*
**
***
****
*****
****
***
**
*
- 向控制臺(tái)輸出下面的圖形
*** ***
***** *****
***********
*********
*******
*****
***
*