根据ECMA-262,第11.13部分,以下是复合赋值运算符的详尽列表:*= /= %= += -= <<= >>= >>>= &= ^= |=
。
据部分11.11,var c = a || b
将会把a
价值成c
,如果ToBoolean(a)
是真实的,将把b
价值为c
其他。这样,逻辑“或”通常用作合并运算符,例如
function (options) {
options = options || {};
}
通常,使用合并来指定变量的默认值,如上所示:a = a || b
。
复合赋值运算符似乎||=
很有用,它允许以更短,更简洁的方式编写上述代码:a ||= b
。然而,它不存在(虽然*=
,+=
和其它复合赋值运算符是)。
问题是,为什么?
angle %= 360
或vertexIndex %= numberOfVertices
(对于封闭多边形的顶点列表),运算符会派上用场。
||=
,&&=
并将很快推出:“您可能会高兴地发现,对于JS2 / ES4,还添加了|| =和&& =。|| =是最多的两者都很有用,但没有理由省略&&的赋值运算形式。” 。