在JavaScript中简单地替换逻辑的赋值运算符?

时间:2013-12-23 22:33:13

标签: javascript operators logical-operators assignment-operator substitution

JavaScript assignment operators对应arithmetic个:+=-=*=/=%=。< / p>

JavaScript还有assignment operators对应bitwise个:<<=>>=>>>=&=^=|=

但它没有与assignment operatorslogical相对应的this other question||=&&=

然后,我不能做像

这样的事情
aVeryLongVariableIdontWantToRepeat ||= 1;

在{{3}}中解释了为什么 JS Java没有这样的运算符。我想这对JS来说是一样的。

但我想知道是否有一种简单的方法来模仿它们,避免

aVeryLongVariableIdontWantToRepeat = aVeryLongVariableIdontWantToRepeat || 1;

3 个答案:

答案 0 :(得分:2)

不,没有。我觉得应该有更多这个答案,但实际上,就是这样。最短版本的a = a || x是...... a = a || x

答案 1 :(得分:1)

使用Coffeescript可以帮助您调查编写代码,Coffeescript具有|| =运算符。

答案 2 :(得分:0)

没有更短的方法:a = a || 1是最简单的方法。

但是,为了避免不必要的值分配(稍微以牺牲可读性为代价),您也可以执行a || ( a = 1)

JSFIDDLE

var a,b='x';
a || ( a = 1 );
b || ( b = 2 );
console.log( a + ', ' + b ); // Outputs "1, x"