为什么多个加号运算符解析?

时间:2016-02-15 17:35:58

标签: javascript parsing operators

我不明白为什么以下的javascript解析;发生了什么事?

var a = 0;
var b = 0;
console.log(a + + + + + + + b);
console.log(a);
console.log(b);

此外,当它进行解析时,我至少期望ab中的一个增加,但它们不会增加。

输出(Chrome):

0
0
0

输出(Firefox):

0
0
0

2 个答案:

答案 0 :(得分:2)

不,增量方式是a++

您在此处所做的是更改号码的符号,但我们知道+不会更改符号(与-相反)。所以在这:

 console.log(a + + + + + + + b);

你在说:

a + (+ (+ (+ (+ b) ) ) )

所以你不是在改变符号,也不是递增数字。检查一下:

 console.log(a++ + + + + + + + b);

您将获得a变量的增量。输出:

 0
 1
 0

答案 1 :(得分:2)

Javascript有一个一元加号运算符,所以这个表达式与

基本相同
console.log(a + (+ (+ (+ (+ (+ (+ b)))))));

这最终只相当于

console.log(a + b);

请注意,增量运算符++(无论是前缀还是后缀运算符)在+之间不能有空格。