3

JavaScript有assignment operators对应arithmetic的:+=-=*=/=%=简单的JavaScript代码中赋值运算符的替代?

的JavaScript也有assignment operators对应bitwise的:<<=>>=>>>=&=^=|=

但它没有assignment operators对应于logical个:||=,&&=

然后,我不能做这样的事情

aVeryLongVariableIdontWantToRepeat ||= 1; 

this other question它解释了为什么 JS Java没有这样的运营商。我想JS也是一样。

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

aVeryLongVariableIdontWantToRepeat = aVeryLongVariableIdontWantToRepeat || 1; 
+2

简单缩短变量名称怎么样? –

+1

您链接到的其他问题不是关于JavaScript,而是关于Java。 –

+0

@ T.J.Crowder Oh,true – Oriol

回答

2

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

+0

还有'a = a? a:x',但稍微长一些。 – RobG

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" 
+1

当然,'a || (a = 1)'不短于'a = a || 1',我们可以指望发动机不要浪费时间去完成任务。 –

1

它可以帮助你去调查使用的CoffeeScript,它具有|| =操作员可编写代码。