JS中三種常見的判斷

JS中的條件判斷能夠說在整個編程的重點中算是最爲簡單的了;javascript

  • 主要有if...else if...else三元運算符switch...case;
  • 其中嚴格來講三元運算符並不算條件判斷的一種方式,而應該算是對簡單if...else條件語句的一種改寫方式。

1、if...else if...else

編程中最多見的判斷java

  • 定義:
    • 條件語句用於基於不一樣條件執行不一樣的動做。
    • 使用 if....else if...else語句來選擇多個代碼塊之一來執行。
  • 語法:
if (條件 1) {
    條件 1true 時執行的代碼塊
} else if (條件 2) {
    條件 1false 而條件 2true 時執行的代碼塊
} else {
    條件 1 和條件 2 同時爲 false 時執行的代碼塊
}
複製代碼
  • 注意:if條件爲一個值時會轉換爲布爾值:
    • 轉換後的結果是 true就表示條件成立
    • false 表示條件不成立
  • 舉例:
let x = 10;
if (x) {
    條件(驗證真假的過程):
    x==10 x===10  x>10  x<10  x>=10 ...
    x 把當前值轉換爲布爾類型驗證真假
    x>=0 && x<=10  或者  x==1 || x==2
    ....
    x++;
} else {
    以上條件都不成立,執行else
    x--;
}
console.log(x);
//=======================================//
let x = '10';
if (x == 1) {
    x += 1;
} else if (x == 5) {
    x += 2;
} else if (x == 10) { //=>'10'==10 把字符串轉換爲數字 條件成立
    x += 3;
    // x = x + 3 => '103'
} else {
    x += 4;
}
console.log(x);
複製代碼

2、三元運算符

在文章的開頭咱們已經說過,嚴格上講,三元運算符並不算是一種判斷。編程

  • 使用狀況:ui

    • 處理最簡單的if / else 狀況的
  • 語法:spa

    • 條件?成立處理的事情:不成立處理的事情;
    let x = 10;
    if (x>=10) {
        x++;
    } else {
        x--;
    }
    //用三元運算符書寫以下:
    x >= 10 ? x++ : x--;
    console.log(x);
    複製代碼
  • 注意:3d

    • 在條件成立或者不成立的時候,若是不想作一些事情,則使用null / undefined 等來佔位便可;
      • 通常用null
      • 不佔位會報錯
    let x = 10;
    if (x == 10) {
        x++;
    }
    //三元運算符方式
    let x = 10;
    x == 10 ? x++ : null;
    複製代碼
    • 若是須要作多件事情,則用小括號包起來,每一件事情中間用逗號隔開
    // 若是須要作多件事情,則用小括號包起來,每一件事情中間用逗號分隔便可
    let x = 10;
    if (x > 0) {
        x++;
        console.log(x);
    }
    x > 0 ? (x++, console.log(x)) : null;
    
    // 能夠根據需求完成三元運算符的嵌套
    let x = 10;
    if (x > 0) {
        if (x < 10) {
            x++;
        } else {
            x--;
        }
    } else {
        x--;
    }
    x > 0 ? (x < 10 ? x++ : x--) : x--;
    複製代碼

3、switch...case

  • 使用狀況:code

    • 一個變量在不一樣值狀況下的不一樣操做,能夠改寫爲switch case 判斷
  • 語法:cdn

    • 每一種狀況結束都要設置break
      • 以供當此條件成立並處理完事情後,通知代碼不在向下執行
    • 關鍵詞規定不存在 case 匹配時所運行的代碼
      • 至關於else (用default代替)
      • 並且最後一個判斷結束無需設置break
    switch(表達式){
        case1:
            表達式的值和 值1匹配上了,須要執行的代碼;
            break;
        case2:
            表達式的值和 值2匹配上了,須要執行的代碼;
            break;
        default:
            若是表達式的值和以上的case後面的值都沒有匹配上,那麼就執行這裏的代碼。
            break;
    }
    複製代碼
  • 侷限:blog

    • 他只能應用於等於什麼值作什麼事,不能用於大於或者小於啥的
  • 注意:ip

    • 每一種case狀況都是基於 === 進行比較的
    • 嚴格比較,須要保證數據類型的一致
let x = '10';
switch (x) {
    case 1: //=>在x等於1的狀況下作什麼
        x += 1;
        break; //=>每一種狀況結束都要設置break(以供當此條件成立並處理完事情後,通知代碼不在向下執行)
    case 5:
        x += 2;
        break;
    case 10: //=>'10'===10 FALSE
        x += 3;
        break;
    default: //=>等價於else,並且最後一個判斷結束無需設置break
        x += 4;
}
console.log(x); //=>'104' 每一種case狀況都是基於 === 進行比較的(嚴格比較,須要保證數據類型的一致)
複製代碼

4、相關的散知識點

一、比較兩個值是否相等的三種方式

  • 一、== 相等
    • 相等比較中,若是左右兩邊數據類型不一樣,則默認先轉換爲相同的數據類型,而後在進行比較
  • 二、=== 絕對相等
    • 須要保證左右兩邊數據類型都同樣,纔會相等,只要有不同,結果都是不想等的
  • 三、Object.is ES6規範中新增的方式(暫不講解)

二、邏輯與 與 邏輯或

  • 在條件語句中出現時
    • 一、邏輯與&&:表示條件必須都成立
    • 二、邏輯或||:表示條件只要有一個成當即可
  • 參數初始化(形參初始化)時
    • A&&B:A爲真返回B的值,A爲假返回A的值
    • A||B:先驗證A的真假,若是A爲真,返回的是A的值,若是A爲假返回的是B的值
    • &&的優先級高於||

三、條件判斷裏的相互轉換規則

如圖:

思惟導圖

相關文章
相關標籤/搜索