我知道标题有些模糊,但我不确定如何真正解释这一点。所以,在代码中
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”
答案 0 :(得分:10)
因为
a += b >= c;
是
a += (b >= c);
这是(在你的情况下)
a += (false);
最终成为
a += 0;
是a
。
在对结果进行任何操作之前,将评估所有赋值运算符的右侧。因此评估了b >= c
,向我们提供了false
,当您尝试将其视为0
的数字时,会a +=
强制转换为HashMap& HashMap::operator=(const HashMap& hm)
。