我怎樣才能在字符串上使用+=
,但是我不能在其上使用-=
?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