我正在浏览器中尝试某些内容,但我不了解结果。
当我输入:
var testPlus = 0;
testPlus += 2
console.log(testPlus)
它给testPlus = 2。
但是当我输入
时var testPlus = 0;
(testPlus +=2) * 2;
console.log(testPlus)
仍然给出2,就像没有计算“* 2”一样。 我不明白为什么?
谢谢
答案 0 :(得分:2)
您只是将+2
分配回testPlus
。 *2
正在发生,但答案并未存储在任何地方。
因此,(testPlus +=2) * 2;
将存储在testPlus
中的值提升到2
,然后再乘以2
,创建一个值4
。但是,4
未在任何地方使用或存储。
答案 1 :(得分:1)
声明
(testPlus +=2) * 2
首先评估括号中的部分。这会为变量添加2
。只有这样,在更新变量后添加和之后,值才会乘以2
。
如果您打算将testPlus
更新为等于其值加2
然后乘以2
,则无法使用+=
执行此操作:< / p>
testPlus = (testPlus + 2) * 2;
或者您可以使用两个语句的序列,一个语句为+=
,另一个语句为*=
:
testPlus += 2;
testPlus *= 2;
答案 2 :(得分:0)
你永远不会使用表达式的结果。您将(已更改的)testPlus
值乘以2,然后将其抛弃。比较testPlus + 2
和testPlus = testPlus + 2
(testPlus += 2
是此的快捷方式。)