JS新运算符?.????===
在ES5之后的标准中JS新增的特性包括了⼀些操作符。javascript的特性
?. 可选链操作符
可选链允许读取连接对象链深处的属性值⽽不必明确验证链中每个引⽤是否有效。该表达式短路返回值
语法:obj?.prop obj?.[expr] arr?.[index] func?.(args)
例如⼀个表达式
res && res.data && res.data.status
意思很明确,这个表达式在res和res.data存在的时候会返回res.data.status。为避免属性值不存在的情况,需要⽤到条件表达式或者三⽬运算符之类的操作。
使⽤可选链操作符后
res?.data?.status
使⽤可选链后不必担⼼抛出不存在的异常,写法更简介。可选链操作符不⽌可⽤于常规对象,还可以⽤于⽅法,数组索引等。
??空值合并操作符
只有当左侧为null和undefined时才会返回右侧的值,否则返回左侧操作数。
与逻辑或操作符 || 不同, || 会在左侧操作符为假值时返回右侧值,可能会遇到意外⾏为,⽐如左侧是空字符串''或0等假值时。
||= &&= ??=逻辑赋值运算符
先进⾏逻辑运算,再根据逻辑结果视情况进⾏赋值运算。
或赋值运算符 ||=
x ||= y相当于x || (x = y)
user.id = user.id || 1 // 当user.id不存在时默认初始化为1
user.id ||= 1 // 新写法
与赋值运算符&&=
x &&=y相当于x && (x = y)
空值赋值运算符??=
当左侧为null或undefined时就把右侧的值赋给左侧,就算右侧是null和undefined也会赋值。
let a = null
let b = 2
a ??= b
console.log(a) // 2
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论