molily: Einfache IF-Abfrage funktioniert nicht... warum?

Beitrag lesen

Hallo,

Ich hatte irgendwie erwartet, dass zuerst aus "18" ein Integer 18 wird, dann "4" zu Integer 4 konvertiert wird und dann der Vergleich stattfindet.

In der ECMAScript-Spezifikation ist definiert, wie der Kleiner-als-Operator funktioniert:

http://es5.github.io/#x11.8.1
http://es5.github.io/#x11.8.5

  1. Else, both px and py are Strings

Wenn beide Operanden Strings sind…

a. If py is a prefix of px, return false.

"Donaudampfschiff" < "Donau" => false

b. If px is a prefix of py, return true.

"Donau" < "Donaudampfschiff" => true

c. Let k be the smallest nonnegative integer such that the character at position k within px is different from the character at position k within py.

"abc" < "def"

k = 0 (denn »a« ist ungleich »d«)

d. Let m be the integer that is the code unit value for the character at position k within px.

m = "a".charCodeAt(0)
m = 97

e. Let n be the integer that is the code unit value for the character at position k within py.

n = "d".charCodeAt(0)
n = 100

f. If m < n, return true. Otherwise, return false.

97 < 100
=> true

"abc" < "def" => true, weil »a« eine kleinere Unicode-Nummer hat als »b«.

Mathias