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,就取自身,反之取??后面的"""

猜你喜欢

转载自blog.csdn.net/Sheng_zhenzhen/article/details/106743134