本文整理一些 JS 中常用的运算符/操作符,其目的在于简化代码。
1. ! 逻辑非
如果要将一个值转为 Boolean 类型,我们常想到 Boolean() 转型函数来实现,其实也可以用 ! 逻辑非运算符实现
!!val // 等价于 Boolean(val)
2.&& 逻辑于
对于以下代码可以用 && 逻辑于改写
if (val) {
myFunction()
}
改写后
val && myFunction()
对于赋值语句也可以这样写
val && (a = 1)
3. || 逻辑或
对于 2 中的例子,我们也可以用逻辑或改写
!val || myFunction()
另外,假如有如下代码
if (val) {
a = val
} else {
a = 'default'
}
改写后
a = val || 'default'
4.?? 空值合并/空判断
空值合并运算符 , 如果 ?? 前面是 null 或 undefined ,取后面的默认值
a = val ?? 'default'
5. ?. null 传导符(或链判断操作符)
在编程中,如果读取对象的内部的某个属性,往往需要判断该对象是否存在,以防止报错。
a = (obj && obj.name) || 'default'
以上代码可以使用 null 传导符简写
a = obj?.name || 'default'
6. ... 扩展运算符
- 对象的扩展运算符
const { id, ...other } = { id: '001', age: 18, name: 'Tom' }
id // 001
other // { age: 18, name: 'Tom' }
- 数组的扩展运算符
const arr = [1, 2]
[0, ...arr] // [0, 1, 2]
7.三元运算符
a = val ? ifTrue : ifFalse
val 为真,则 a 取值 ifTrue ,否则取值 ifFalse
8.连等赋值操作
这个操作偶尔能在有些插件代码中看到,我自己不常用
let a,b
a = b = 1
a // 1
b // 1
以上代码等价于
let a,b
b = 1
a = b