为什么++;或者--can';在JavaScript中不能直接应用于文本?
我正在学习JavaScript,现在在操作符一章中。我想知道为什么为什么++;或者--can';在JavaScript中不能直接应用于文本?,javascript,type-conversion,operators,Javascript,Type Conversion,Operators,我正在学习JavaScript,现在在操作符一章中。我想知道为什么++true在JavaScript中是一个无效的表达式,而+true就可以了。我想差异是因为JavaScript中++(或--)操作符的工作方式。只是想知道当应用++时会发生什么 console.log(+true); // 1, fine console.log(++true); // SyntaxError 为什么true不会像+那样隐式转换为数字并递增 当值存储在变量中时,++执行预期的任务,但我们不能直接在文本上使用它。
++true
在JavaScript中是一个无效的表达式,而+true
就可以了。我想差异是因为JavaScript中++
(或--
)操作符的工作方式。只是想知道当应用++
时会发生什么
console.log(+true); // 1, fine
console.log(++true); // SyntaxError
为什么true
不会像+
那样隐式转换为数字并递增
当值存储在变量中时,
++
执行预期的任务,但我们不能直接在文本上使用它。因为当您使用++
或--
时,它会更改您正在操作的变量的值
var a=1;
console.log(++a);
控制台日志(a);
控制台日志(--a);
控制台日志(a)
和+
和-->
减量前后运算符隐式修改操作数变量或属性。操作数必须能够出现在赋值运算符的左侧,否则使用++
或--
没有意义
<> P>同样,C、C++、java也是如此。我想象如果不是所有的C继承编程语言,包括那些运算符。 <代码>代码+++/> >将变量加上1,并将增量值赋给变量。当参数不是变量时,这没有意义。无法更改
true
的值++true
相当于true=true+1
您不能对任何文本使用++
,例如console.log(++3)
也是一个错误,因为它相当于console.log(3=3+1)
请注意,++
将在必要时将布尔值转换为整数,但它必须位于变量中:
x=true;
console.log(++x)代码>使用++
和--
运算符更改值。
在您的例子中,您试图增加布尔值或不可变值,这是不可能的
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
,查看“左手侧”和“右手侧”表达式;可能会有一些启示。长话短说,对于代码1=1+1
来说,什么是合理的事情呢?true
不是变量,+
是一个曾经我认为如果我能做++1左右,这将真的毫无意义的问题。但后来我认为除了隐式类型转换,+1(或类似的表达式)也没用。+
将其参数转换为数字。如果它已经是一个数字,它不会做任何事情,但它对一致性很有用。就像x一样,如果x
已经是字符串,则toString()
将正常工作。