美文网首页基础前端
ES2021 牛X的逻辑赋值运算符

ES2021 牛X的逻辑赋值运算符

作者: CondorHero | 来源:发表于2021-07-20 11:18 被阅读0次
ES2021 牛X的逻辑赋值运算符.png

Note: 运算符也可翻译为操作符 Operator,下文采用运算符的翻译说法。

起源

逻辑赋值运算符是一个合成概念,包括了两部分内容:

  1. 逻辑运算符

逻辑运算符包括:||(或运算符)、&&(且运算符)、??(空值合并运算符)

  1. 赋值运算符

赋值运算符就很简单了,简单的一个 =(等于)就好了。

当然你也可以把结合算术赋值运算符的复杂赋值运算符归为赋值运算符之类,比如:

+=(加等于)、-=(减等于)、*=\=%= 等,准确的叫法是算数赋值运算符,当然你也可以直接叫赋值运算符

接下里我们来解释下 逻辑赋值运算符,从名字来看,你大致就能猜出它们的样子了,没错就是下面三个。

  • &&=
  • ||=
  • ??=

用法

我们以我们熟悉的 +=(加等于)这个运算符举例,同理推理逻辑赋值运算符,我们知道 a += b 其实可拆解为 a = a + b

那么,我们就可明白各个逻辑赋值运算符代表的意义了,分别如下表:

简写 全写 前置条件 根据前置条件运行的结果
x ||= y x || (x = y) x = 0, y = 10 10
x &&= y x && (x = y) x = 1, y = 11 11
x ??= y x ?? (x = y) x = null, y = 12 12

观察表格的全写栏,我们以 x ||= y 的全写为例子,它可以拆解为 x || (x = y),也可以拆解为 x = x || y,甚至是三元 x = x ? x : y,更甚是 if (!x) x = y。剩下两个同理了。

上面的例子,我们简单的见识了逻辑赋值运算符的使用,我来用文字详细解说下:

  • x || = y:仅当 x 为假时,才将 y 赋值给 x。如果 x 是真,则不会进行赋值运算。

  • x && = y:仅当 x 为真时,才将 y 赋值给 x。如果 x 为假,则不会进行赋值运算。。

  • x ?? = y:仅当 x 为 null 或 undefined 时,才将 y 分配给 x。如果 x 既不是 null 也不是 undefined 则不会进行赋值。

举例

接下里我们要打很多的栗子了:

  1. 逻辑或赋值运算符 (||=)

// 基本语法
x ||= y

// 相当于:
x = x || y

if (!x) {
    x = y
}

x = x ? x : y

// 例 1:
let x = 1
let y = 0
x ||= y

console.log(x)
// 输出:
// 1

// 例 2:
let x = 0
let y = 9
x ||= y

console.log(x)
// 输出:
// 9

// 例 3:
let x = 5
let y = 10
x ||= y

console.log(x)
// 输出:
// 5
  1. 逻辑与赋值运算符 (&&=)
x &&= y

// 相当于:
x = x && y

if (x) {
  x = y
}

x = x ? y : x

// 例1:
let x = 1
let y = 0 
x &&= y
console.log(x)
// 输出:
// 0

// 例 2:
let x = 0 
let y = 10 
x &&= y
console.log(x)
// 输出:
// 0

// 例 3:
let x = 3 // 真
let y = 15 // 真
x &&= y
console.log(x)
// 输出:
// 15
  1. 空值合并赋值运算符 (??=)

x ??= y

// 相当于:
x = x ?? y

if (x == null || x == undefined) {
    x = y
}

x = x == null || x == undefined ? y : x

// 例 1:
let x = null 
let y = 'CondorHero' 
x ??= y
console.log(x)
// 输出:
// 'CondorHero'

// 例 2:
let x = 'Hi' 
let y = 'CondorHero' 
x ??= y
console.log(x)
// 输出:
// 'Hi'

// 例 3:
let x = 'Hi'
let y = null 
x ??= y
console.log(x)
// 输出:
// 'Hi'

// 例 4:
let x = undefined 
let y = 'CondorHero' 
x ??= y

console.log(x)
// 输出:
// 'CondorHero'

总结

我们从算术赋值运算符,讲起引导出了逻辑赋值运算符,然后通过大量的栗子来掌握它的使用。

最后,我们明白逻辑赋值运算其实就是条件语句的语法糖,优化了我们代码的语法和减少了代码所占空间,非常使用。

碎碎念

最近在 哔哩哔哩录视频,今天的日更目标是完不成了,小破站的网站竟然挂了,明天才能好了,先睡觉,完美!

bilibili 挂了

完~

2021-07-13 23:51

相关文章

  • ES2021 牛X的逻辑赋值运算符

    Note: 运算符也可翻译为操作符 Operator,下文采用运算符的翻译说法。 起源 逻辑赋值运算符是一个合成概...

  • 【8】python第八课--运算符运算

    算数运算 (+ - x /) 赋值运算 (变量) 复合赋值运算符 比较运算符 (大于 小于 等于 不等于) 逻辑运...

  • Swift---2.基础运算符

    赋值运算符 算术运算符(+,-,*,/等) 组合赋值运算符 逻辑运算符 == != > < >= <=示例var ...

  • 【JavaScript高程总结】远算符

    运算符类型 算数运算符 赋值运算符 赋值运算符用于给变量赋值,最常见的赋值运算符,当然就是等号,表达式x=y表示将...

  • 运算符与字符串

    运算符 算数运算符、比较运算符、赋值运算符、逻辑运算符比较运算符:>、<、>=、<=、==、!=赋值运算符:=、+...

  • JS运算符总结

    赋值运算符 名字操作符含义赋值x=yx=y加法赋值x+=yx=x+y减法赋值x-=yx=x-y乘法赋值x*=yx=...

  • Dart运算符、表达式、类型转换

    Dart运算符: 算术运算符 关系运算符 逻辑运算符 赋值运算符1、基础赋值运算符 2、复合赋值运算符 条件表达式...

  • 运算符

    @[TOC] 算术运算符 赋值运算符 += (x+= 3 相当于 x = x + 3 ) -= (x -= 3 相...

  • 运算符

    2.实例 3.赋值运算符 4.比较运算符 5.三元运算符格式:数据类型 X ? Y : Z; 6.逻辑运算符 ~...

  • April 18th_day04_cricle

    record 运算符:比较、逻辑、赋值 ,<,==,!=,>=,<=and,or,not=,+=,-=,=,/=,...

网友评论

    本文标题:ES2021 牛X的逻辑赋值运算符

    本文链接:https://www.haomeiwen.com/subject/emyepltx.html