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

时间:2016-11-19 14:32:27

标签: javascript operators

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

var a= 2, b=3;
a+=b;
//5

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

var a= 2, b=3, c=4;
(a+=b) >= c;
//true

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

var a= 2, b=3, c=4;
a += b >= c;
//2

我试过阅读一些关于操作顺序等等的东西,但我仍然无法理解代码如何输出“2”

1 个答案:

答案 0 :(得分:10)

因为

a += b >= c;

a += (b >= c);

这是(在你的情况下)

a += (false);

最终成为

a += 0;

a

在对结果进行任何操作之前,将评估所有赋值运算符的右侧。因此评估了b >= c,向我们提供了false,当您尝试将其视为0的数字时,会a +=强制转换为HashMap& HashMap::operator=(const HashMap& hm)