1
var a=1;
b=++a*a;
console.log(b);
console.log(a);

结果是4,2。程序如何得到这个结果?在我看来,结果将是 2,2

谁能告诉我javascript编译器如何编译这段代码并得到结果4,2。

那么深层次的问题就是为什么这两段代码的结果是一样的。

var a=2;
var b=3;
c=(a++)*a; 
console.log(c);


var a=2;
var b=3;
c=(a++)*b; 
console.log(c);

谁能一步一步解释这个?

4

2 回答 2

1

++的优先级高于*。因此b = ++ a * a被评估为b = (++a) * a

++aa等于 2,然后自身a被乘数。

顺便说一句,每次你对这样的事情感到困惑时,找到 JavaScript 的运算符优先级表并尝试自己分解这个等式。

于 2017-07-14T07:44:27.447 回答
0

++a 在乘法之前将值增加到 2。在此之后,变量“a”将指向值 2,它将进行乘法运算:2*2。

a++*a 会给你想要的结果 (2,2)

于 2017-07-14T07:47:21.120 回答