为什么++或 - 不能直接应用于JavaScript中的文字?

时间:2016-07-11 16:50:23

标签: javascript type-conversion operators

我正在学习JavaScript,现在在操作员章节中。我想知道为什么++true是JavaScript中的无效表达式而+true就好了。我猜这些差异是因为++(或--)运算符在JavaScript中的工作方式。只是好奇知道在应用++时会发生什么。

console.log(+true); // 1, fine
console.log(++true); // SyntaxError

为什么true不会隐式转换为数字,并且会在+的情况下递增。

当值存储在变量中时,++会完成预期的工作,但我们无法直接在文字中使用它。

4 个答案:

答案 0 :(得分:4)

因为当您使用++--时,它会更改您正在操作的变量的值。



var a = 1;
console.log(++a);
console.log(a);
console.log(--a);
console.log(a);




通过执行++true,您意味着您重新更改true 的值,这将是一件绝对可怕的事情。

由于true是一个不可变的值,因此您无法在其上使用变异运算符。

答案 1 :(得分:4)

++将变量中的值加1,并将该递增值赋值给变量。当参数不是变量时,这没有意义。您无法更改true的值。 ++true相当于true = true + 1

您无法在任何文字上使用++,例如console.log(++3)也是一个错误,因为它等同于console.log(3 = 3 + 1)

请注意,如果需要,++ 将布尔值转换为整数,但它必须位于变量中:

x = true;
console.log(++x);

答案 2 :(得分:2)

++--前后递减运算符隐式修改操作数变量或属性。操作数必须可以出现在赋值运算符的左侧,否则使用++--是没有意义的。

对于C,C ++,Java也是如此,我想大多数(如果不是所有的)C-heritage编程语言都包含那些运算符。

答案 3 :(得分:0)

++--运算符会更改该值。 在你的情况下,你试图增加boolean或非可变值的值,这是你不可能做到的。

var x = 10;
console.log(++x) // Output 11
console.log(x++) // Output 12
//Or
var y = true;
console.log(y++) //Output 2

在第二种情况下,输出为2,因为true等于1false等于0