什么叫做語句?
語句:可以理解為語言中一句一句完整的話,程序是由一條條語句構成的,語句是按照自上往下的順序執行的。
在JavaScript可以使用{ }來為語句進行分組。同一{ }中的語句稱為一組語句,他們要么都執行要么都不執行;
一個{ }中的語句也稱之為代碼塊,代碼塊后面不需要添加分號(;)。
JS中的代碼塊只有分組的作用沒有其他的作用。代碼塊中內部的內容再外部同樣可以使用。
流程控制語句
JavaScript中的語句是從上到下一層一層執行的
通過流程控制語句可以控制程序執行的流程,使程序可以根據一定的條件來選擇執行。
語句的分類:
1、條件判斷語句
2、條件分支語句
3、循環語句
條件判斷語句
使用條件判斷語句可以在執行某個語句之前進行判斷,如果條件成立才會執行語句,如果條件不成立則語句不執行。
條件控制語句包括:1、if 語句 和 2、switch-case 語句
一、if語句
if 語句,條件位置處,必須Boolean的值 / 表達式 / 變量,如果不是Boolean類型的話,JS會自動進行轉換
例如這些 if(0 /0.0 / null / undefined / NaN){ } 這些 if 都會認為是false。因為0/0.0/null/undefined/NaN 這些值轉換為布爾值都是 false, 除此以外一律為真。
if語句塊的 { } ,是可以被省略的,如果省略 { } ,那么if只控制它下面的第一條語句
(一)if 語句
if(條件表達式){ //執行語句
}
if 語句
規則:if語句在執行時會先對條件表達式進行求值判斷;
- 如果條件表達式為true,則執行if后的語句;
- 如果條件表達式為false,則不會執行if后的語句;
實例:
1、條件表達式值為true,則繼續執行后面的語句
if(true) alert('輸出');
注意:不使用{}時,if 語句只能控制緊隨其后的那個語句
實例:
var a=11; if(a<10) alert("如果a<10則輸出"); alert("雨女無瓜");
如果希望if語句可以控制多個語句,可以將語句分組,統一放在代碼塊中
var a=11; if(a>10) { document.write("如果a>10則輸出"); alert("雨女無瓜"); }
注意: if語句后的代碼塊不是必須的,但在代碼開發的時候盡量寫上代碼塊,哪怕只有一行語句
(二)if…else結構
if (條件表達式) { 執行語句… } else{ 執行語句… }
if…else…語句:(復雜if結構 或 多重if結構)
規則:當使用if…else語句的時候,會先對if后的條件表達式進行求值判斷。
- 如果條件表達式為true,則執行if后的語句;
- 如果條件表達式為false,則執行else后的語句;
- if里面的執行語句和else后面的執行語句,最終只能有一個被執行
實例:
var age=70
if(age<60){ alert("還不到退休的年齡~") }else{ alert("已經退休了~") }
(三)if …else if…else 多分支語句
if(條件表達式){ 語法… }else if(條件表達式){ 語句… }else if(條件表達式){ 語句… }else{ 語句… }
if…else if…else語句
規則:當該語句執行時,會從上到下對條件表達式進行求值判斷
- 如果值為true,則執行當前語句
- 如果值為false,則繼續向下判斷
- 如果所有條件都不滿足,則執行else后面的語句
在該語句中只有一個代碼塊會被執行,一旦代碼塊執行了,則直接結束語句。
實例:
var week=4; if(week>5) { alert("到周末了,放假了~") } else if(week>3){ alert("這周快過去了") }else if(week=1){ alert("黑色星期一") }else{ alert("隨便什么日子~") }
注意:語句是從上到下進行運算檢查的,如果符合了一個表達式的條件,就會執行其后面的代碼,不會再繼續向下執行。
所以要注意語句編寫的順序。
var age=40; if(age>17) { alert("成年了") } else if(age>30){ alert("人到中年") }else if(age<18){ alert("未成年") }else{ alert("年紀不小了") }
if語句 代碼練習:
例一:
從鍵盤輸入小明的成績:
當成績為100時,輸出“獎勵一筆記本”
當成績為[80~90]時,輸出“獎勵一部手機”
當成績為[60~80]時,輸出“獎勵一本試卷”
當成績小於60時,什么獎勵也沒有。
注意:在進行if條件語句書寫的時候要充分考慮可能出現的情況。
就本例而言,滿分為100分,所以輸入大於100或小於0,又或是非數字的值都是不符合要求的。
方法:
使用prompt( ) 函數,可以彈出提示框,該提示框中會有一個文本框。
用戶可以在文本框中輸入一段內容,該函數需要字符串作為一段參數,該字符串將會作為提示框的提示文字出現。
用戶出現的內容會作為函數的返回值出現,可以定義一個變量來接收該內容。
代碼:
var score=prompt("請輸入成績"); if(score > 100 || score < 0 || isNaN(score)){ alert("請輸入0~100之間的數字~") } else{ if(score=100) { alert("獎勵一筆記本") } else if(score>80 && score<99){ //或是else if(score>=80);
alert("獎勵一部手機") }else if(score<80 && score>60){ alert("獎勵一本試卷") }else{ alert("什么獎勵也沒有") }}
例二:
某公司招聘,提出了如下要求:
年齡30歲以下,有工作經驗兩年以上,成績大於500
如果三個條件都滿足:聘用
如果三個條件中有為真的情況:現在急需用人,先用着不合適就辭退;
如果三個條件都不符合:不行,不能聘用
var age=prompt("請輸入年齡"); var exper=prompt("請輸入工作時間"); var univ=prompt("請輸入成績"); // alert(age +","+ exper +","+ univ);
if(age < 30 && exper > 2 && univ > 500 ){ alert("馬上聘用") }else if(age < 30 || exper >2 || univ > 500 ){ alert("會考慮一下") }else{ alert("不予考慮,不行") }
實例三:
判斷閏年
算法:閏年(四年一閏,百年不閏,四百年再閏)
彈出prompt 輸入框,讓用戶輸入年份,然后將這個值取過來保存在變量中
使用if語句判斷是否是閏年,如果是閏年,就執行 if 后面的執行語句,否則就執行else后面的語句
var year = prompt('請輸入年份'); if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { alert(year + '年是閏年'); }else { alert(year + '年不是閏年'); }
二、switch-case語句
switch 語句也是多分支語句,它用於基於不同的條件來執行不同的代碼。當要針對變量設置一系列的特定值的選項時,就可以使用switch
switch-case語句是一種特殊的分支結構,可以根據表達式的不同取值,從不同的程序入口開始執行。
語法:
switch(條件表達式){ case 表達式 : 語句… 語句… break; case 表達式 : 語句… break; default : 語句… break; }
執行流程:
switch…case…語句
執行時會將 case 后表達式的值與 switch條件表達式 的值進行全等(==)比較,
- 如果比較結果為true,則從當前case處開始執行代碼。當前case后的所有代碼都會被執行。可以在case代碼后跟着break關鍵字,這樣可以確保只執行當前case后的語句,而不會執行其他case。
- 如果比較結果為false,則繼續向下比較
- 如果所有比較結果都為false,則只執行default后的語句
switch語句中的每一種情況(case)的含義是:“如果表達式等於這個值(value),則執行后面的語句(statement)”;
break關鍵字 會導致代碼執行流跳出switch語句。如果省略break關鍵字,就會導致執行完當前case后,繼續執行下一個case。
default關鍵字 則用於在表達式不匹配前面任何一種情形時,執行機動代碼(因此,也相當於一個else語句)
switch語句和if語句異同點:
switch語句和if語句實際上是有重復的,使用switch可以實行if的功能,使用if也可以實現switch的功能,具體選擇哪種方法,可以根據自己的習慣選擇。
switch-case語句 常常和break語句結合使用實現分支的功能;
switch-case在實現分支功能時和if-else的主要區別:
- if…else…可以判定相等或不等的情形,適用性更廣;
- switch-case結構的結構更清晰、效率更高;但是一般只用指定變量相等於某個范圍內的某個特定值才去使用
實例:(根據num的值來輸出對應的英文)
var num=1; switch(num){ case 1: console.log("one"); }
注意:如果比較結果為true,就從當前case處開始執行代碼。從當前case處執行代碼意味着不僅僅是case后面緊跟着的這條語句,還有case后面所有的語句都進行輸出。(num為2,case 2表達式與其全等,所以case 2后面的所有代碼都運行)
var num=2;
switch(num){
case 1:
console.log("one");
case 2:
console.log("two");
case 3:
console.log("three");
}
輸出結果:
注意:執行break可以退出switch語句,截斷了case代碼,只輸出case 2后面的語句。