2009-11-17 16 views
8

Wie kann ich += auf eine Zeichenfolge verwenden, aber ich kann nicht -= darauf verwenden?Javascript String Assignment Operators

Zum Beispiel ...

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

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

test -= arr; 
alert(test); // Shows "NaN" 
+1

Hinweis: Ich bin kein Dummy; Ich weiß, dass Sie eine Zeichenfolge nicht "subtrahieren" können. Jemand hat mich das gefragt und ich war mir nicht sicher, wie ich reagieren sollte, also poste ich es hier. –

+0

Der Operator '+' ist der Verkettungsoperator, wenn einer der Operanden eine Zeichenfolge ist. – Gumbo

+1

Nur zwei Operatoren sind für Strings definiert: '+' und '+ =' (https://developer.mozilla.org/en/Core_Javascript_1.5_Reference#Operators) –

Antwort

11

Die kurze Antwort ist - es ist nicht definiert, mit Strings zu arbeiten.

Längere Antwort: Wenn Sie den Subtraktionsoperator auf zwei Strings versuchen, wird er zuerst auf Zahlen und dann auf die Arithmetik angewendet.

"10" - "2" = 8 

Wenn Sie versuchen, etwas, das nicht-numerisch ist, erhalten Sie einen NaN bezogener Fehler:

"AA" - "A" = NaN 
0

Allgemeinen Programmiersprachen definieren keine Subtraktion für Strings. + = ist nicht wirklich eine Addition in erster Linie, es ist Verkettung.

+0

php ist viel besser für den Umgang mit Strings – streetparade

1

Dies liegt daran, dass das Minuszeichen kein gültiger String-Operator ist, während das Pluszeichen überladen ist, um beide Zahlen (Additionsoperator) und Strings (Verkettungsoperator) zu verarbeiten.

Welche Ergebnisse haben Sie daraus gewonnen?

+0

In der Hoffnung, die " Dekrement "Operator würde sich wie ein Teilstring verhalten und herausreißen, was zuvor angehängt wurde. –

+0

Im Beispiel würde der zweite Alarm "Test" anzeigen –

+0

Aber auch bei Zahlen ist das Minuszeichen nicht "dekrementieren", das ist minus-minus "-". Minus-equals '- =' ist nur ein Convenience-Operator, der ein zusammengesetzter Operator ist, der mit dem Ausdruck 'a = a-b' analog ist –

0

Weil das + (Pluszeichen) auch der String-Verkettungsoperator ist, während das - (Minuszeichen) nur für die Subtraktion gilt. Wenn JavaScript 2 Zeichenfolgen anhängen kann, wird es sich nicht beschweren, aber wenn Sie versuchen, 2 Zeichenfolgen zu subtrahieren, ergibt das keinen Sinn.

6

Da der Operator + verkettet Strings, aber der - Operator nur Zahlen voneinander subtrahiert.

Zum Warum - wahrscheinlich, weil es schwierig ist zu bestimmen, was Leute tun wollen, wenn sie Strings voneinander subtrahieren.

Zum Beispiel:

"My string is a very string-y string" - "string" 

Was soll das?

3

Wie alle gesagt, die -= Operator nicht mit Strings arbeiten überlastet, es funktioniert nur mit Zahlen.

Wenn Sie versuchen, es zu benutzen, mit Streichern, wird der Betreiber versuchen, beide Operanden in Number zu konvertieren, das ist, warum Sie NaN bekommen, denn:

isNaN(+"foo"); // true 

Um auf die Beseitigung der arr Inhalt zu bekommen test string, du kannst replace es:

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"