JS中的操作员问题

时间:2015-03-30 14:21:40

标签: javascript operators

代码块1:

var a = (1 + - + + + - + 1); 
alert(a); //2

为什么等于2?

代码块2:

var a = (1+-+++-+1);
alert(a); //ReferenceError: Invalid left-hand side expression in prefix operation

3 个答案:

答案 0 :(得分:3)

在表达式中使用空格时,它会丢弃前一个运算符,这就是为什么代码阻止了两个错误,而代码块1基本上就是这样做了:

var a = (1 + 1);

答案 1 :(得分:0)

实际上,它只是basic math。它被分组并像这样评估

1 + (- (+ (+ (+ (- (+ 1))))))

它不会丢弃以前的运营商。它只是使用-乘以+的基本法则-。  例如,以下内容只是1 - (+ 1)的分组,1 - 1 0

1 - + 1 // 0

现在,当你不使用空格时,javascript会将其解释为递增和递减运算符,从而解释错误。

答案 2 :(得分:0)

首先,另一个答案是关于#34;怪异的"在第一种情况下的行为。您在第二种情况下没有空格的情况下获得ReferenceError的原因是因为其中两个+被视为++增量命令。

1+-+(+(+-1))不会给您一个错误