Calocybe: Addition mit JS

Beitrag lesen

Hi!

Du mußt Dir erst einmal darüber klar werden, was eine Variable in JavaScript bedeutet.
Variablen sind hier typenlos bzw. sie nehmen den Typ des in ihr gespeicherten Wertes an.

Variablen sind eben *nicht* typenlos! Sie nehmen nur dummerweise abhaengig vom zugewiesenen Wert immermal einen anderen Typ an. Naja, das hast Du wohl gemeint. Ausserdem wird abhaengig vom Kontext ab und zu mal eine Typumwandlung durchgefuehrt, so wie gleich nachfolgend gezeigt, diese wird dann aber nicht in der Variable gespeichert.

Es gibt eine Typenkonvertierungsregel. Die solltest Du Dir zu Gemüte ziehen.
Es gibt Konvertierungsfunktionen (nicht ganz) wie parseInt(...).

Eine 1 + "10" wird somit zu einer Zahl mit dem Wert 11.
Eine "1" + 10 wird zu einem String mit dem Wert "110";

Beim ersten kommt auch "110" raus. Ich kenne zwar keine feste Konvertierungsregel, aber man kann sich merken, dass immer der Weg des geringsten Widerstands gegangen wird. Und der geringste Widerstand fuehrt immer zum String (dr laesst sich aus allen Datentypen erzeugen, im Gegensatz zu einer Zahl). Wird also eine Number und ein String addiert, egal in welcher Reihenfolge, wird die Zahl in einen String umgewandelt und dann eine Stringaddition durchgefuehrt. Anders ist es bei der Subtraktion. Eine Stringsubtraktion gibt es nicht, deshalb wird dann versucht, alle Beteiligten in eine Zahl umzuwandeln. Aehnlich ist es bei der Multiplikation.

Somit ist also ein
(1 * zahl1 ) + zahl2
eine Zahl, ergo Deine Lösung!

Ja, intern wird aber auch einfach ein parseInt() durchgefuehrt.

So long