流程控制,是任何一門程式設計語言都有的一個文法。
如果你學習C語言,或者學過C#、Java等,應該對“流程控制”很熟悉。
所謂的流程控制,指的是控制程式按照怎樣的順序執行。
在JavaScript中,共有三種流程控制方式(其實任何語言也都隻有這三種啦)。
順序結構
選擇結構
循環結構
順序結構
在JavaScript中,順序結構是最基本的結構。所謂順序結構,
就是代碼按照從上到下、從左到右的“順序”執行,
舉例:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script>
var str1 = "綠葉學習網";
var str2 = "JavaScript";
var str3 = str1 + str2;
document.write(str3);
</script>
</head>
<body>
</body>
</html>
分析:
按照“從上到下、從左到右”的順序,JavaScript執行順序如下。
第一步:執行var str1 = "綠葉學習網”
第二步:執行var str2 = “JavaScript”
第三步:執行var str3 = str1 + str2
第四步:執行document.write(str3)
JavaScript一般情況下就是按照順序結構來執行的。不過呢,在有些場合,我們單純隻用順序結構就沒法解決問題了。此時就需要引入選擇結構和循環結構。
選擇結構
在JavaScript中,選擇結構指的是根據“條件判斷”來決定使用哪一段代碼。選擇結構有單向選擇、雙向選擇以及多向選擇三種,但是無論是哪一種,JavaScript都隻會執行其中的一個分支,選擇結構流程如圖3-3所示。
循環結構
循環結構,指的是根據條件來判斷是否重複執行某一段程式。若條件為true,則繼續循環;若條件為false,則退出循環。
選擇結構:if
在JavaScript中,選擇結構指的是根據“條件判斷”來決定使用哪一段代碼。
選擇結構有單向選擇、雙向選擇以及多向選擇三種,但不管是哪一種,JavaScript隻會執行其中的一個分支。
在JavaScript中,選擇結構共有兩種方式,一種是if語句,
另外一種是switch語句。這一節我們先來介紹if語句。對于if語句,主要包括以下幾種。
單向選擇:if…
雙向選擇:if…else…
多向選擇:if…else if…else…
if語句的嵌套
單向選擇:if…
文法:
if(條件)
{
…
}
說明:
這個“條件”一般是一個比較表達式。如果“條件”傳回為true,則會執行“{}”内部的程式;如果“條件”傳回為false,則會直接跳過“{}”内部的程式,然後按照順序來執行後面的程式。
在JavaScript中,由“{}”括起來的程式,我們稱為“語句塊”。語句塊常用于選擇結構、循環結構以及函數體中,JavaScript把一個語句塊看成是一個整體來執行。
舉例:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script>
var score = 100;
if (score > 60) {
alert("那你很棒棒噢~");
}
</script>
</head>
<body>
</body>
</html>
分析:
由于變量score的值為100,是以score>60傳回true,是以會執行“{}”内部的程式。
雙向選擇:if…else…
文法:
if(條件)
{
……
}
else
{
……
}
說明:
“if…else…”相對“if…”來說,僅僅是多了一個選擇。當條件傳回為true時,會執行if後面“{}”中的程式;當條件傳回為false時,會執行else後面“{}”中的程式。
舉例:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script>
var score = 100;
if (score < 60) {
alert("補考!");
} else {
alert("通過!");
}
</script>
</head>
<body>
</body>
</html>
分析:
由于變量score的值為100,而score<60傳回false,是以會執行else後面“{}”中的程式。
對于雙向選擇,我們是可以使用三目運算符來代替的,像上面這個例子,如果用三目運算符來寫,實作代碼如下。
舉例:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script>
var score = 100;
var result = (score < 60) ? "補考!" : "通過!";
alert(result);
</script>
</head>
<body>
</body>
</html>
多向選擇:if…else if…else…
多向選擇,就是在雙向選擇的基礎上增加多個選擇分支。
文法:
if(條件1)
{
//當條件1為true時執行的代碼
}
else if(條件2)
{
//當條件2為true時執行的代碼
}
else
{
//當條件1和條件2都為false時執行的代碼;
}
說明:
多向選擇文法看似很複雜,實質也是非常簡單的,它隻是在雙向選擇基礎上再增加一個或多個選擇分支罷了。小夥伴們對比一下這兩個的文法格式就知道了。
舉例:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script>
var time = 21;
if (time < 12)
{
document.write("早上好!");//如果小時數小于12則輸出“早上好!”
}
else if (time > =12 && time < 18)
{
document.write("下午好!"); //如果小時數大于等于12并且小于18,輸出“下午好!”
}
else
{
document.write("晚上好!"); //如果上面兩個條件都不符合,則輸出“晚上好!”
}
</script>
</head>
<body>
</body>
</html>
分析:
對于多向選擇,我們會從第一個if開始判斷,如果第一個if條件不滿足,則判斷第二個if條件……直到滿足為止。一旦滿足,就會退出整個if結構。
if語句的嵌套
在JavaScript中,if語句是可以嵌套使用的。
文法:
if(條件1)
{
if(條件2)
{
當“條件1”和“條件2”都為true時執行的代碼
}
else
{
當“條件1”為true、“條件2”為false時執行的代碼
}
}
else
{
if(條件2)
{
當“條件1”為false、“條件2”為true時執行的代碼
}
else
{
當“條件1”和“條件2”都為false時執行的代碼
}
}
說明:
對于這種結構,我們不需要去刻意去記,隻需要從外到内根據條件一個個去判斷就可以了。
舉例:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script>
var gendar = "女";
var height = 172;
if(gendar=="男")
{
if(height>170)
{
document.write("高個子男生");
}
else
{
document.write("矮個子男生");
}
}
else
{
if (height > 170)
{
document.write("高個子女生");
}
else
{
document.write("矮個子女生");
}
}
</script>
</head>
<body>
</body>
</html>
分析:
在這個例子中,首先外層if語句的判斷條件gendar=="男"傳回false,是以會執行else語句。然後我們可以看到else語句内部還有一個if語句,這個内層if語句的判斷條件height>170傳回true,是以最終輸出内容為“高個子女生”。
實際上,if語句的嵌套也是很好了解的,說白了就是在if或else後面的“{}”内部再增加一層判斷。對于if語句的嵌套,我們一層一層由外到内判斷就可以了,就像剝洋蔥一樣,非常簡單。我們再來一個例子,讓小夥伴消化一下。
舉例:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script>
var x = 4;
var y = 8;
if (x < 5)
{
if (y < 5)
{
document.write("x小于5,y小于5");
}
else
{
document.write("x小于5,y大于5");
}
}
else
{
if (y < 5)
{
document.write("x大于5,y小于5");
}
else
{
document.write("x大于5,y大于5");
}
}
</script>
</head>
<body>
</body>
</html>