es6运算符

85 阅读1分钟

空值合并操作符(??)

左侧操作数为null或者undefined时,返回右侧操作数,否则返回左侧操作数

null ?? 5 //5
undefined ?? 5 //5
4 ?? 5 //4
"" ?? 5 //""

空赋值运算符(??=)

左侧操作数为null或者undefined时,把右侧操作数赋值给左侧变量,否则返回左侧操作数

var a=null
var b=5
a ??= b //a=5

let c=0
c ??= 1 //c=0

可选操作符(?.)

允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效?. 运算符的功能类似于 . 链式运算符,不同之处在于,在引用为空 (nullish ) (null 或者 undefined) 的情况下不会引起错误,该表达式短路返回值是 undefined。与函数调用一起使用时,如果给定的函数不存在,则返回 undefined

a?.b // 等同于 a == null ? undefined : a.b

let person = { 
   name: 'John',
    message: { 
        age: 20,
        height: 180,
     
    }
} 
let res = person?.mes?.age ?? "age"; // => "age" 
let res2 = person?.age; // => undefined

三元运算符

条件 ? 条件为真时要执行的表达式 : 条件为假时要执行的表达式

let a=0
let b=a>0?1:2 //2