003 逻辑运算的高级用法

[A] 可选链 (?.)

  场景:

    1. 开发中,我们经常使用 obj.name 的方式区获取对象的属性

    2. 而我们又无法保证obj本身一定存在,若obj为null, undefined,以及obj根本不是对象类型,执行 obj.name 就会报错

    3. 常规方法:

      var a = obj ? obj.name : ' '

  用法:

    我们也可以使用可选链来解决:

      var a = obj?.name

  计算逻辑:
    1. 当obj存在,且obj上存在name属性时,a的值才是obj.name

    2. 否则,a得到的就是undefined

    3. 这样就可以保证只有当obj.name能成功获取时,才会将其返回, 否则返回undefined,这样就可以避免掉获取obj属性失败而报错的现象出现

 

[B] 空值合并运算符 (??)

  场景:

    1. 有时候,我们需要判断变量的值是否存在(即是否为null, undefiend),但直接做判断时,值为0也会判断为false

    2. 常规写法,我们可以做多次判断:

      if (a != 0 && a) {}

  用法:

          var a = undefined
          var b = a ?? 'good'
          console.log(b)

      只有当a不是undefiend和null时,b才会等于a,否则就等于‘good’

 

[C] 空值赋值运算符 (??=)

  场景:

    无

  用法:

    var a = undefined
    var b = '200'

    a ??= 1000
    b ??= 2000

    console.log(a)
    console.log(b)

  计算逻辑:

    ??= 首先判断左侧变量是否为undefined和null,若是,则执行右侧的语句,并将返回值赋值到左侧,若不是,则左侧变量值不变,并且跳过(即不执行)右侧语句。

 

posted @ 2022-09-22 18:28  CarreyB  阅读(41)  评论(0)    收藏  举报