1.流程控制
就是來控制代碼按照何種順序來執行,流程控制有三種結構:順序結構、分支結構、循環結構
2.順序流程控制
程序按照代碼先后順序依次執行
3.分支流程控制
JS中提供兩種分支結構語句:if語句、switch語句
3.1 if語句
if語法結構:
//條件成立則執行代碼,否則什么也不做
if (條件表達式) {
//執行的語句
}
案例:進入網吧
彈出一個輸入框,要求用戶輸入年齡,如果年齡大於等於18則運行進入網吧
var age = prompt('請輸入年齡');
if (age >= 18) {
alert('允許進入網吧');
}
3.2 if else雙分支語句
語法結構:
if (條件表達式) {
//語句1
} else {
//語句2
}
注意: else后面直接跟大括號{},不跟小括號()
案例:
var age = prompt('請輸入年齡');
if (age >= 18) {
alert('允許進入網吧');
} else {
alert('禁止未成年進入網吧');
}
案例: 判斷閏年
接收用戶輸入的年份,如果是閏年就彈出閏年,否則彈出平年.
算法:可以被4整除且不能被100整除的為閏年或者說能夠被400整除的是閏年
var year = prompt('請輸入年份');
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
alert('是閏年');
} else {
alert('不是閏年');
案例:判斷是否中獎
接收用戶輸入的姓名來判斷是否中獎,如果輸入的是劉德華則提示中了5塊,否則提示沒中獎
var user_name = prompt('請輸入用戶名');
if (user_name == '劉德華') {
alert('嘻嘻,中了5塊錢');
} else {
alert('嗚嗚,沒中獎');
}
3.3 if else多分支語句
if (條件表達式1) {
//語句1
} else if (條件表達式2) {
//語句2
} else if (條件表達式3) {
//語句3
} else {
//語句4
}
案例:判斷成績級別
var score = prompt('輸入用戶成績');
score = parseFloat(score);
if (score >= 90) {
alert('A');
} else if (score >= 80) {
alert('B');
} else if (score >= 70) {
alert('C');
} else if (score >= 60) {
alert('D');
} else {
alert('E');
}
3.4 三元表達式
由三元運算符組成的式子,我們稱為三元表達式。語法如下:
//條件表達式 ?表達式1 :表達式2
說明:若條件表達式為真則返回表達式1的值,否則返回表達式2的值。
//條件表達式 ?表達式1 :表達式2
var num = 10;
var result = num > 5 ? '是的' : '不是的';
console.log(result);
案例:數字補零
要求:用戶輸入數字,如果數字小於10,則在前面補0,比如:01,09,如果數字大於10則不需要補0,如20。
var num = prompt('請輸入數字');
var result = num > 10 ? num : 0 + num;
console.log(result);
3.5 switch語句
switch也是多分支語句,語法結構如下:
switch (表達式) {
case value1:
執行語句1;
break;
case value2:
執行語句2;
break;
case value3:
執行語句3;
break;
default:
執行最后的語句;
}
說明:
- default里面的語句是在沒有value值與switch里的表達式相匹配的時候才執行的。
- switch里面的值和case里面的值必須全等===的時候才算匹配成功。
- 如果當前的case里面沒有break則不會推出switch,而是無論是否匹配,繼續執行下一個case,直達遇到下一個break。
案例:用戶在彈出的輸入框里面輸入一個水果,如果有則彈出該水果的價格,如果沒有就彈出沒有此水果。
3.5 switch語句和if else if語句的區別
- 當分支較少時,if...else語句的執行效率比switch語句高
- 當分支較多時,switch語句的執行效率比較高,而且結構更清晰
作業1:判斷時間段,比如用戶輸入12點彈出中午好,用戶輸入18點彈出傍晚好,用戶輸入23點彈出深夜好。
var time = prompt('請用戶輸入時間');
if (time <= 4) {
alert('清晨');
} else if (time <= 8) {
alert('早上');
} else if (time <= 10) {
alert('上午');
} else if (time <= 13) {
alert('中午');
} else if (time <= 16) {
alert('下午');
} else if (time <= 18) {
alert('傍晚');
} else {
alert('晚上');
}
作業2:比較兩個數的最大值(用戶依次輸入兩個值,最后彈出最大的那個值)
var num1 = prompt('請輸入第一個數字');
var num2 = prompt('請輸入第二個數字');
var result = num1 > num2 ? alert('較大的數是' + num1) : alert('較大的數是' + num2);
console.log(typeof num1);
作業3:用戶輸入一個數,來判斷是奇數還是偶數。
var num = prompt('請輸入數字');
if (num % 2 == 0) {
alert(num + '是偶數');
} else {
alert(num + '是奇數');
}
作業4:根據用戶輸入的數值(數字1~數字7),返回星期幾
var day = prompt('請輸入1~7之間的一個數字');
switch (day) {
case '1':
alert('星期1');
break;
case '2':
alert('星期2');
break;
case '3':
alert('星期3');
break;
case '4':
alert('星期4');
break;
case '5':
alert('星期5');
break;
case '6':
alert('星期6');
break;
case '7':
alert('星期天');
break;
default:
alert('數字超出范圍');
}
作業5:接收班長口袋里的錢數,若大於等於2000則請大家吃西餐。若小於2000,大於等於1500,請大家吃快餐。若小於1500,大於等於1000,請大家喝飲料。若小於1000,大於等於500,請大家吃棒棒糖。否則提醒班長下次把錢帶夠。
var money = prompt('班長口袋里的金額');
if (money >= 2000) {
alert('班長請大家吃西餐');
} else if (money >= 1500) {
alert('班長請大家吃快餐');
} else if (money >= 1000) {
alert('班長請大家喝飲料');
} else if (money >= 500) {
alert('班長請大家吃棒棒糖');
} else {
alert('班長記得下次把錢帶夠');
}