欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

逻辑赋值(Logical Assignment)

程序员文章站 2022-07-16 15:10:07
...

假设您需要先判断是否为空,再为变量分配数值,那么如下代码便展示了这样的基本逻辑:

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

如果您熟悉上面提到的短路计算的工作原理,则可能会使用null-ish合并运算符(coalescing operator),将上述三行代码替换为如下更简洁的版本。

x ?? (x = y) // x = y if x is nullish, else no effect

由上述代码可知,如果x为null-ish的话,我们可以使用null-ish合并运算符的短路功能,来执行第二部分(x = y)。这段代码虽然非常简洁,但是不太容易被阅读或理解。而我们完全可以使用如下代码,根据逻辑上的null-ish分配,来消除此类变通方法。

x ??= y // x = y if x is nullish, else no effect

同样,JavaScript还引入了逻辑AND赋值–&&=、逻辑OR赋值–||=的运算符。这些运算符仅在满足特定条件时被执行赋值,否则并不起作用。

x ||= y // x = y if x is falsy, else no effect 
x &&= y // x = y if x is truthy, else no effect

专家建议:如果您有过Ruby的编程经验,那么您会一眼识别出||=和&&=运算符。毕竟Ruby并没有虚假值的概念。