我正在学习JavaScript,现在在操作员章节中。我想知道为什么++true
是JavaScript中的无效表达式而+true
就好了。我猜这些差异是因为++
(或--
)运算符在JavaScript中的工作方式。只是好奇知道在应用++
时会发生什么。
console.log(+true); // 1, fine
console.log(++true); // SyntaxError
为什么true
不会隐式转换为数字,并且会在+
的情况下递增。
当值存储在变量中时,++
会完成预期的工作,但我们无法直接在文字中使用它。
答案 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
等于1
且false
等于0
。