[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,若是,则执行右侧的语句,并将返回值赋值到左侧,若不是,则左侧变量值不变,并且跳过(即不执行)右侧语句。
标签:逻辑运算,obj,name,用法,003,var,null,undefined From: https://www.cnblogs.com/carreyBlog/p/16719979.html