JavaScript-流程控制
流程控制分為:條件選擇,回圈控制
條件選擇
if、else
//1. if
if(條件){
執行陳述句
}
//2. if...else
if(條件){
執行陳述句1
}else{
執行陳述句2
}
//3. if...else if...else
if(條件1){
執行陳述句1
}else if(條件2){
執行陳述句2
}else{
執行陳述句3
}
ps:以上就是if...else組成的三種條件選擇,在以后的使用中會非常的頻繁,也是編程中最重要的語法,具體采用哪一種看自己愛好
switch陳述句
switch(值){
case 值1:
執行陳述句
break;
case 值2:
執行陳述句
break;
case 值3:
執行陳述句
break;
default:
執行陳述句
}
ps:switch 陳述句不像if判斷那樣把條件寫在圓括號()里面,而是把多個條件寫在case后面,滿足case后面的值,就執行,直到break就跳出switch陳述句,
需要注意的是:case可以多個并行在一起,比如這樣
switch(值){
case 1:
case 2:
case 3:
console.log('a');
break;
case 4:
console.log('b');
}
也就是說,switch里面的值如果是1,2,3中的某一個,都會執行列印'a'的陳述句,因為他們的結束條件就是遇到break;
回圈控制
while回圈
//1. while
while(條件){
回圈體
}
//2. do...while
do{
回圈體
}while(條件);
區別:while需要滿足回圈條件才會執行,do...while無論是否滿足條件,他都會先執行一次,然后再判斷回圈條件,
ps:在寫回圈體時,盡可能要有退出回圈的條件,或者return,break關鍵字,否則就是一個死回圈,
for回圈
//1. 普通for回圈
for(初始值;回圈條件;改變條件){
回圈體
}
面試題:如何用for寫一個最高效的死回圈?
很簡單,直接:for(;;){}
//2. for...in
以一個arr陣列為例
var arr = [3,3,4,5,7,89,0,-10];
for(var index in arr){
console.log(arr[index],typeof index)
}
這里的index是陣列的下標,從0開始,但是這個index的值型別不是number,而是string,
這就很奇怪,但是使用的時候,比如arr[index]卻不會報錯,所以就也不用自己手動去轉了,
//3. for...of
還是上面陣列為例
for(var value of arr){
console.log(value)
}
這里的value就是arr的值了,從第一個值開始到最后遍歷
注意:
1.這三個for回圈效率都一樣,使用看個人愛好,
2.按道理來說,使用for...in時候,我們應該用const(定義常量)來定義下標,因為下標是不能夠改的,for...of也應如此,
break 和 continue關鍵字
//break
//外層回圈
for(const i in arr1){
//內層回圈
for(const j ipann arr2){
if(arr[i] === arr[j]){
break;
}
}
}
上面的if條件成立,則執行break陳述句,跳出回圈,但是break不會結束整個回圈,而是結束內層的回圈,沒法結束外層的回圈,
//continue
//外層回圈
for(const i in arr1){
//內層回圈
for(const j in arr2){
if(arr[i] === arr[j]){
continue;
}
}
}
上面的if條件成立,執行continue陳述句,那么continue后面的陳述句都不會執行,結束了
當前的這一次(注意是這一次)回圈,還是會繼續下一次的回圈,此時它應該還是內層回圈著,
面試會問break和continue的比較?
- break和continue都可以作用于回圈陳述句,但是break還可以在switch里
- break結束離他最近的一個回圈
- continue結束的是離他最近的本次回圈
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/247125.html
標籤:其他
