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
- 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