vb.net 同时给多个属性赋值_JavaScript最新提议:新的逻辑赋值运算符

本文介绍了JavaScript的最新提案——逻辑赋值运算符(||=, &&=, ??=),这些运算符提供了更简洁的语法来处理条件赋值。逻辑赋值运算符在确保只在必要时执行赋值,避免了不必要的计算。例如,??=用于为对象添加缺失属性,而在条件逻辑中,||=和&&=可以简化多行逻辑判断。通过示例,文章详细解释了这些运算符的工作原理及其在代码中的应用。
摘要由CSDN通过智能技术生成
7a1acbbd6e5188374ed3c38ad60a1209.png

逻辑赋值运算符提议(https://github.com/tc39/proposal-logical-assignment)引入以下复合赋值运算符:

a ||= ba &&= ba ??= b

现有复合赋值运算符

JavaScript已经有以下复合赋值运算符:

  • 算术赋值运算符:
+= -= *= /= %= **=
  • 按位分配运算符:
&= ^= |=
  • 按位移位分配运算符:
<<= >>= >>>=

在我们研究所提出的算符之前,我们必须先绕一小段路,学习之前的"短路"

逻辑运算符| |,&&??所有运算符仅当第一个操作数尚未确定结果时,才计算第二个操作数:

91997056e8b12760f2e102716449f72b.png

提议的运算符

逻辑赋值运算符的工作方式与其他复合赋值运算符不同:

307ee2d96f7bdde2c8a2f787d484f133.png

为什么a | |=b等价于下面的表达式?

a | |(a=b)

为什么不是这样呢?

a=a | | b

前一个表达式具有短路的优点:只有当a的计算结果为false时,才会计算赋值。因此,只有在必要时才执行赋值。相反,后一个表达式总是执行赋值。

示例:使用??=添加缺少的属性

const books = [  {    isbn: '123',  },  {    title: 'ECMAScript Language Specification',    isbn: '456',  },];// Add property .title where it’s missingfor (const book of books) {  book.title ??= '(Untitled)';}assert.deepEqual(  books,  [    {      isbn: '123',      title: '(Untitled)',    },    {      title: 'ECMAScript Language Specification',      isbn: '456',    },  ]);

示例:分解表达式

考虑以下函数,该函数返回跨多行展开的表达式:

function canContainNumber(value) {  return typeof value === 'number'    || typeof value === 'bigint'    || typeof value === 'string'  ;}assert.equal(canContainNumber(''), true);assert.equal(canContainNumber(Symbol()), false);

此表达式可以按如下方式分解:

function canContainNumber(value) {  let result = false;  result ||= typeof value === 'number';  result ||= typeof value === 'bigint';  result ||= typeof value === 'string';  return result;}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值