这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战
标准新增
ES2021的标准增加了:
logical-assignment-operators
即逻辑赋值运算符proposal-numeric-separator
即数字分隔符 这篇文章我们就来了解一下ES2021的两个新增标准。
逻辑赋值运算符
逻辑赋值运算符:当前值为falsy
(伪)的时候用来赋值。这里我们需要知道的是 falsy
不是 false
,伪值是在布尔上下文中遇到时被视为 false[的值],如下:
false
0
-0
0n
"" '' `` ,,
null
undefined
NaN
document.all
逻辑 或
那么我们的运算符又该怎么使用呢,如下:
const obj={
name:"也笑"
}
obj.name ||= "slifree";
obj.age ||= 812;
console.log(obj.name); // 也笑
console.log(obj.age);// 812
我们知道逻辑运算符会(||
)短路,其实,逻辑赋值运算符也会短路,这意味着仅当逻辑运算将评估右侧时,它才会执行赋值。也就说下述表达式:
x ||= y
等价于
x || (x=y)
逻辑 与
同逻辑或对比,表达式使用如下:
x &&= y
等价于
x && (x=y)
也就是说当前值为truthy
的时候,才会进行赋值操作,如下:
let a=1;
a &&=2; // a=2
数字分隔符
为了提高数字文本的可读性,下划线 (_
) 可用作分隔符,使用如下:
- 十进制数
// 整数
1_000_000_000_000; // 1000000000000
// 小数
2_021.1128; // 2021.1128
- 二进制数
0b1010_0001; // 161
- 八进制数
0o2_0_2_1; // 1041
- 十六进制数
0x1_1_2_8; // 4392
- BigInts
1_000_000_000_000_000_000_000n; // 1000000000000000000000n
注意事项
我们需要注意的是:
- 逻辑赋值运算就是先进行逻辑操作,如果当前值:
或为falsy
,与为truthy
,则对当前值赋值。 - 使用数字分隔符的时候,需要注意:
- 不能连续用
_
,错误示例:1__1
。 _
后面要跟数字,错误示例:100_
。- 不能以0开头,错误示例:
0_1
。
- 不能连续用
总结
在实际开发中,我们可以以为逻辑赋值操作来减少我们的代码量,可以增加代码的阅读性。
如果你想了解ES的其他特性,请移步到 ES2015+碎片化学习,每天都在向前走一步,这是所有文章的目录入口。