1. 程式人生 > >學習 JavaScript (五)核心概念:語句

學習 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 都是在下。

用心學習,認真生活,努力工作!