我怎样才能在字符串上使用+=
,但是我不能在其上使用-=
?Javascript字符串赋值操作符
例如...
var test = "Test";
var arr = "⇔"
test += arr;
alert(test); // Shows "Test⇔"
test -= arr;
alert(test); // Shows "NaN"
我怎样才能在字符串上使用+=
,但是我不能在其上使用-=
?Javascript字符串赋值操作符
例如...
var test = "Test";
var arr = "⇔"
test += arr;
alert(test); // Shows "Test⇔"
test -= arr;
alert(test); // Shows "NaN"
简短的回答是 - 它没有被定义为使用字符串。
较长的答案:如果您尝试两个字符串的减法运算符,它会首先将它们转换为数字,然后执行算术运算。
"10" - "2" = 8
如果你尝试一些非数字,你就会得到一个NaN的相关错误:
"AA" - "A" = NaN
这是因为减号不是有效的String运算符,而加号被重载以处理Numbers(加法运算符)和Strings(连接运算符)。
你希望从中得到什么结果?
希望“递减“操作符将表现得像一个子字符串,并将之前附加的内容翻录。 – 2009-11-17 19:40:01
在这个例子中,第二个提示会显示“测试” – 2009-11-17 19:41:13
但即使有数字,减号也不是“递减”,即负号“ - ”。 Minus-equals' - ='只是一个便利操作符,它是一个与表达式'a = a - b'类似的复合操作符 – 2009-11-17 19:43:24
因为+(加号)也是字符串连接运算符,而 - (减号)仅适用于减法。如果JavaScript可以附加2个字符串,它不会抱怨,但如果您尝试减去2个字符串,它就没有任何意义。
由于+
运算符连接字符串,但-
运算符只能相互减去数字。
至于为什么 - 可能是因为很难确定人们在从对方中扣除字符串时想做什么。
例如:
"My string is a very string-y string" - "string"
我应该这样做?
由于所有所说,-=
运营商没有超载与弦乐的工作,它仅适用于数字。
如果您尝试使用字符串使用它,操作员将尝试在两个操作数转换为Number
,这就是为什么你得到NaN
,因为:
isNaN(+"foo"); // true
为了摆脱对arr
内容的您test
字符串,你可以replace它:
var test = "Test",
arr = "⇔"
test += arr;
alert(test); // Shows "Test⇔"
test = test.replace(arr, ""); // replace the content of 'arr' with "" on 'test'
alert(test); // Shows "Test"
注:我不是虚拟的;我知道你不能“减去”一个字符串。有人问我这个,我不知道如何回应,所以我在这里发布。 – 2009-11-17 19:38:56
当其中一个操作数是字符串时,“+”运算符是连接运算符。 – Gumbo 2009-11-17 19:38:58
只有两个运算符被定义为字符串:'+'和'+ ='(https://developer.mozilla.org/en/Core_Javascript_1.5_Reference#Operators) – 2009-11-17 19:54:02