常用运算符

150 阅读1分钟
  • !!val // 等价于 Boolean(val)
  • 逻辑与
if (val) {
    myFunction()
}

val && myFunction()

赋值:
val && (a = 1)

  • 逻辑或
if (val) {
    myFunction()
}

!val || myFunction()

if (val){
    a = val
}else {
   a = 'xxx' 
}

a = val || 'xxx'
  • ?? 空值合并/空判断 (node不支持)

// ??前面时null或者undefined,取后面的默认值

a = val ?? 'default'

应用

if (val !== null && val !== undefined && val !== '') {
  console.log('hello')
  // ...
}

if ((val ?? '') !== '') {
  console.log('hello')
}
  • ?. null 传导符(或链判断操作符) (node不支持)

    • obj?.prop  对象属性
    • obj?.[expr]  对象属性(数组也可如此使用)
    • func?.(...args)  函数的调用或对象方法的调用
  • 扩展运算符和剩余运算符

onst { id, ...other } = { id: '001', age: 18, name: 'Tom' }

const arr = [1, 2]

[0, ...arr] // [0, 1,2]

  • 展开运算符 展开运算符的常见作用大致分为:

    • 展开数组:展开运算符(…)会把数组中各项展开显示。
    • 拼接数组:展开运算符还可以用来拼接两个数组,把各项元素连接到一起,形成一个新数组。(可以在数组任意位置拼接)
    • 拷贝数组:执行的都是浅拷贝(只遍历一层)。
    • 在函数中使用:展开运算符可以运用在函数参数中。
    • 构造字面量对象:展开运算符在对对象使用时,应当注意以{}包裹起来。
const obj = {
  a: 1,
  b:2,
  c:3
}

const {a,b,c} = obj

console.log(a,b,c)

//-----------------
const obj = {
  a: 1,
  b:2,
  c:3
}

const obj2 = {
  a: 1,
  b:2,
  d:4
}

const obj3 = {...obj,...obj2}
console.log (obj3)
  • 三元运算符

  • 连等赋值操作

这个操作我们也能经常看见,但我自己并不常用

let a,b
a = b = 1
a // 1
b // 1

以上代码等价于

let a,b
b = 1
a = b