ES6实用运算符

可选链操作符 ?.

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

let a = undefined
let b = a ?.name
// b = a.name 程序会报错崩溃,因为undefined是不允许.运算的
// b = undefined
// 会先去判断b是否是undefined/null, 再去判断是否有name值,如果判断失败直接返回undefined
// 而不会程序报错

空值合并运算符 ??

概念: 空值合并操作符(??)是一个逻辑操作符,当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数

let a = undefined ?? 'default name'
// a = 'default name'

逻辑或赋值 ||=

概念: 逻辑或正义(x ||= y)只是在x为falsy(虚值)时赋值
虚值: false, undefined, null, NaN, ‘’, 0

let a = ''
a ||= 'hello word'
console(a) 
a ||= '你好'
// 'hello word'
// 'hello word'

逻辑与赋值 &&=

概念: 逻辑与赋值 ( x &&= y) 仅在 x 是 truthy(真值)时对其赋值
truthy: 除虚值以外的所有值 (见逻辑或赋值)

let a = 1
let b = 0
a &&= 2
b &&= 3
// a=2,b=0

逻辑空属性 ??=

概念: 逻辑空赋值运算符 (x ??= y) 仅在 x 是 nullish (null 或 undefined) 时对其赋值

let a = {
	name: '小明'
}
a.name ??= '小红'
a.age ??= 25

console.log(a.name)
console.log(a.age)
// 小明 25
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值