JS中常用的運算符

運算符

運算符優先級

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table

1、成員訪問:尋找對象裏的屬性名所對應的屬性值就是成員訪問(19)
Fn.aa
2、new(帶參數列表):就是構造函數執行有括號(19)
3、new(無參數列表):就是構造函數執行沒有括號(18)
優先級一樣,從左到右運算

符號:&&、||、%、+=/-=、i++/i–、 ==/===、!/!!

  • && 邏輯且 : && 左右兩邊都成立,這個條件成立
    • 如果前邊轉布爾是true,那就取後邊的,反之就取前邊的。
let num = 1&&2;
console.log(num);//2
let num1 = 0&&1;
console.log(num1)//0

if(1=="1"&&2==="2"){
        console.log(100)
     }
  • || : 或 只有左右兩邊一個成立的,整體結果就是true;
    • 如果前邊轉布爾是false,就取後面的,反之就是前面的
let num = 1||2;
console.log(num);//1

let num1 = 0||1;//1

let num3 = 0&&1||1&&2//2

if(1==true||2===3){
  console.log(200)
}
  • % 在語句執行中,%代表取模,俗稱取餘數

  • +=/-=

    • let num =2;
    • num+=3 =>num=num+3
    • console.log(num);
  • i++ : 在自身的基礎上+1,正常運算;

    • i++ : 先取值,後運算
    • ++i : 先運算,後賦值
  • = : 賦值 先算等號右側,再算等號左側

  • == : 會進行比較,返回一個布爾值:會默認進行數據類型之間的轉換

  • != 不等

  • === :全等,絕對比較;不進行數據類型轉換,只要數據類型不一樣,返回false

  • !== 絕對不等

  • []獲取變量只能用中括號

    • 中括號法可以用變量作爲屬性名,而點方法不可以;
    • 中括號法可以用數字作爲屬性名,而點語法不可以;
  • !/!!

    • !:把其他數據類型先轉布爾,然後取反
      • !null//true
    • !! 把其他數據類型轉布爾,然後取反再取反

ES2020

可選鏈操作符(Optional Chaining)

  • 當檢查嵌套對象內部的屬性時,通常必須檢查中間對象的存在。
  • ES2020的可選鏈接運算符讓我們可以新加一個?(可選鏈操作符語法?.),檢查對象深處是否存在值。
  • 不用像以前用&&去判斷前一項是否存在或者部分情況用三元去判斷。
        const res = { 
            "result": true, 
            "message": "success", 
            "data": { 
                "id": 726, 
                "title": "你要努力的去生活,因爲你只有努力了,才知道自己真的不行。", 
                "hits": 31, 
                "status": 1, 
                "user_id": 1 ,
                "obj":{
                    "name":"zhainanya"
                }
            } 
        }
        
        let a=res.data?.obj?.name;
        //如果返回的對象中有data,就取res.data.obj,沒有返回undefined
        //如果data中有obj,就取res.data.obj.name,沒有返回undefined
        console.log(a);

空位合併運算符(Nullish coalescing Operator)

  • 空位合併運算符是一個非常簡單的名稱,使我們能夠檢查一個值是否爲null或undefined,如果是,則默認爲另一個值,僅此而已。
  • 轉布爾爲false是下面五種情況
  • null
  • undefined
  • 空字符串 “”
  • 0
  • 沒有數字-NaN

        const result={
            "result":true,
            "message":"success",
            "data":{
                "a":0,
                "b":"",
                "c":null,
                "d":undefined,
                "e":NaN,
            }
        }
        let b=result.data.a?result.data.a:"";
        console.log(b);//想要0但是結果是""
        let c=result.data.a??""
        console.log(c);//0
        let d=result.data.c??"";
        console.log(d);//""

        let f=result.data?.c??"";
        console.log(f);//""
        let e=result.data?.a??"";
        console.log(e);//0
        //如果result.data存在,就取result.data.a
        // 如果result.data.a其值不爲null或undefined,就取自身,反之取??後面的"""

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章