Javascript:使用+ =运算符的奇怪行为

Gry*_*yxs 3 javascript operators

我知道标题有些模糊,但我不确定如何真正解释这一点.所以,在代码中

var a= 2, b=3;
a+=b;
//5
Run Code Online (Sandbox Code Playgroud)

这是非常基本的JavaScript.现在我想检查结果是否大于某个数字

var a= 2, b=3, c=4;
(a+=b) >= c;
//true
Run Code Online (Sandbox Code Playgroud)

但是,如果我忘记添加括号,我不明白结果可能来自何处

var a= 2, b=3, c=4;
a += b >= c;
//2
Run Code Online (Sandbox Code Playgroud)

我尝试阅读一些关于操作顺序和诸如此类的东西,但我仍然无法理解代码如何输出"2"

T.J*_*der 10

因为

a += b >= c;
Run Code Online (Sandbox Code Playgroud)

a += (b >= c);
Run Code Online (Sandbox Code Playgroud)

这是(在你的情况下)

a += (false);
Run Code Online (Sandbox Code Playgroud)

最终成为

a += 0;
Run Code Online (Sandbox Code Playgroud)

是的a.

在对结果进行任何操作之前,将评估所有赋值运算符的右侧.因此b >= c评估,给予我们false,0当你试图将它作为一个数字处理时,它被强制执行a +=.