Javascript字符串赋值运算符

Jos*_*ola 10 javascript operators assignment-operator

为什么我可以+=在字符串上使用,但我不能使用-=它?

例如...

var test = "Test";
var arr = "⇔"

test += arr;
alert(test);  // Shows "Test⇔"

test -= arr;
alert(test);  // Shows "NaN"
Run Code Online (Sandbox Code Playgroud)

Goy*_*uix 13

简短的回答是 - 它没有定义为使用字符串.

更长的答案:如果你在两个字符串上尝试减法运算符,它将首先将它们转换为数字,然后执行算术运算.

"10" - "2" = 8
Run Code Online (Sandbox Code Playgroud)

如果您尝试非数字的东西,则会收到与NaN相关的错误:

"AA" - "A" = NaN
Run Code Online (Sandbox Code Playgroud)


Sea*_*ira 6

因为+运算符连接字符串,但-运算符只相互减去数字.

至于原因 - 可能是因为当他们相互减去字符串时很难确定人们想要做什么.

例如:

"My string is a very string-y string" - "string"
Run Code Online (Sandbox Code Playgroud)

这应该怎么办?