學習 JavaScript (五)核心概念:語句
語句
語句被稱作是流控制語句,通常有標誌性的一個或者多個關鍵字,if 、 do-while、 while、for、 for-in、 label、 break、continue、with、switch。
if 語句
if 語句就是我們常說的條件語句,在條件滿足的情況下,執行一段程式碼,條件不滿足就不執行,if...else...。
if ('條件'){
程式碼塊 1
}else{
程式碼塊 2
}
看下面的示例:
if (i>25){
alert ('i 大於 25')
} else {
alert ('i 小於或等於 25')
}
程式碼塊可以不用 {} 包著,但是使用會讓程式碼更清晰。也可以增加多個條件, if...else if...else...:
if (i>25){
alert('i 大於 25')
} else if(i=25) {
alert('i 等於 25')
} else {
alert('i 小於 25')
}
do-while 語句
do-while 語句是一種後測試迴圈語句,也就是說,不管條件成不成立,先執行一遍程式碼。形式如下:
do {
程式碼塊 // 這裡的程式碼肯定會被執行一次
} while (條件)
while 語句
while 語句是一種前測試迴圈語句,這個語句的用法和 if 一致,先判斷條件再執行程式碼。
while(條件){ 程式碼塊;// 只有條件滿足才會被執行 }
for 語句
for 語句也是一個前測試迴圈語句,在迴圈執行之前初始化變數和定義迴圈後要執行的程式碼的能力。比如:
for(初始化變數;約束條件;後置操作符){
程式碼塊
}
// 舉一個例子
for(let i = 0; i < 10; i++){
alert(i)
}
三個表示式都是可以選的,如果全部為空則程式碼塊部分會無限迴圈下去。
for-in
for-in 語句是一種精準的迭代語句,一個典型的用法就是列舉物件的屬性。比如:
for (let item in object){
程式碼塊
}
其中 let 可以省略,寫上會好一些。
label 語句
label 的作用就是給程式碼做一個標記,一遍我們在接下來的程式碼中引用,經常和 for 迴圈語句聯合使用,下面會有示例。比如:
start: for(let i = 0; i < 10; i++){
alert(i)
}
break 和 continue 語句
按照我自己的理解,break 語句會讓程式碼中途徹底退出,請看示例:
let a = 0;
for (let i = 1; i < 10; i++){
if(i % 5 == 0){
break;
}
a++;
}
alert(a); // 結果是 4
i 的初始值為 1 ,在 i == 5 的時候,程式跳出迴圈,執行 alert()
continue 會讓程式碼跳過滿足條件的那一次迴圈,示例在這兒:
let a = 0;
for (let i = 1; i < 10; i++){
if(i % 5 == 0){
continue;
}
a++;
}
alert(a); // 結果是 8
i 的初始值為 1 ,在 i == 5 和 i == 10 的時候,程式各跳出迴圈一次,所以結果是 8
和 label 語句連用的時候可以改變迴圈的次數,一般是在巢狀迴圈中使用的,其中和 break 連用可以穿透多層迴圈,和 continue 連用只能穿透內層迴圈。
let a = 0;
outer:for (let i = 0; i < 10; i++){
for (let j = 0; i < 10; j++){
if (i == 5 && j == 5){
break outer;
}
a++;
}
}
alert(a); // 55
當 i == 0,1,2,3,4, j 從 0 執行到 9;
當 i == 5,j 從 0 執行到 4
隨後兩個迴圈停止
如果 label 語句遇到 continue ,則是這樣:
let a = 0;
outer:for (let i = 0; i < 10; i++){
for (let j = 0; i < 10; j++){
if (i == 5 && j == 5){
continue outer;
}
a++;
}
}
alert(a); // 95
當 j == 5 ,最裡面的迴圈停止一次,外層的迴圈繼續執行。所以,i 能從 0 執行到 9。
with 語句
不經常使用這個語句,嚴格模式下不被允許使用,大型應用的時候不建議使用。
switch 語句
switch 的語法和 C 語言的語法類似,如下所示:
switch (表示式){
case value :
程式碼塊;
break;
case value :
程式碼塊;
break;
case value :
程式碼塊;
break;
case value :
程式碼塊;
break;
default:
程式碼塊;
}
上面程式碼的含義就是如果表示式的值是其中一個 case,就執行相應的程式碼塊。如果所有 case 的 value 都不滿足要求,則執行 default 下面的程式碼塊。
switch (i){
case 1 :
alert(i);
break;
case 2 :
alert(i);
break;
case 3 :
alert(i);
break;
default:
alert(i);
}
可以看得出來,switch 語句就是 if...else if...else 的簡寫。
如果不寫 break 語句,就是合併兩個 case,此時儘量做好註釋,說明這不是一個低階錯誤。
在 JavaScript 中 switch 有一個比較有重要的特性: case 的值不一定是產量,可以是變數,甚至是表示式。這也是其他語言所不具備的:
let a = 25;
switch (true){
case a < 0 :
alert("a 小於 0");
break;
case a > 0 :
alert("a 大於 0");
break;
case a == 0 :
alert("a 等於 0");
break;
default:
alert("a 不是實數");
}
這裡 case 返回的是布林值,返回的是 true 則執行相應的程式碼塊。
注意,switch 比較值的過程中是嚴格比較,即數字字串和數字不相等。
歡迎大家關注微信公眾號:** 視覺化技術( visteacher )**
不僅有前端和視覺化,還有演算法、原始碼分析、書籍相送
各個分享平臺的 KurryLuo 都是在下。
用心學習,認真生活,努力工作!