JavaScript is weird
Array gleich !Array?
[] == ![] // -> ?
a) false
b) true
Antwort
Antwort: b) true
Arrays sind in JavaScript "truthy", sodass ![]
zu false
wird. Und wiederum zu einer 0 beim Vergleich. []
wird direkt zu einer Number gecastet. Leere Arrays werden in JavaScript zu einer 0 gecastet, sodass am Ende 0 == 0
geprüft wird.
Ist NaN gleich NaN?
Object.is(NaN, NaN) // -> ?
NaN === NaN // -> ?
a) true, true
b) false, false
c) true, false
d) false, true
Antwort
Antwort: c) true, false
NaN und NaN haben das gleiche Value, weshalb Object.is(NaN, NaN)
-> true
zurückliefert. Beim strict equal (===
) wird allerdings immer false zurückgegeben, wenn einer der Werte NaN ist.
parseInt ... Hä?
parseInt("Infinity") // -> ?
Antwort
Antwort: NaN
parseInt("Infinity", 19)
Antwort
Antwort: 18
Erklärung: der 2. Parameter bei parseInt gibt das Zahlensystem an, in dem geparsed werden soll. Hier base-19. parseInt parsed immer so lange, bis es kein passendes Zeichen mehr findet. I entspricht in base-19 der 18 und ist damit ein parse-barer Wert.
parseInt(null, 24)
Antwort
Antwort: 23
Erklärung: parseInt konvertiert den Input immer erst zu einem String und macht daher aus null -> "null". N entspricht in base-24 der 23.
.........
[...[..."..."]].length // -> ?
Antwort
Antwort: 3
Erklärung: Der Spread-Operator ...
nutzt die @@iterator
Funktion. Bei einem String gibt die iterator Methode ein Array mit den einzelnen Chars zurück.
[..."..."] // -> [".",".","."]
[...[".",".","."]] // -> [".",".","."]
null mit 0 vergleichen
null < 0 // -> ?
null == 0 // -> ?
null <= 0 // -> ?
Antwort
null < 0 // -> false
null == 0 // -> false
null <= 0 // -> true
Erklärung:
-
6.1.6.1.12 Number::lessThan
TLDR: beide Seiten werden über einen Algorithmus auf Zahlen gecastet und verglichen
+0 < 0 // -> false
Aber auch+0 > 0 // -> false
-
6.1.6.1.13 Number::equal
TLDR: Algorithmus hat hierfür keinen speziellen Fall, daher default:false
- JavaScript schaut hier nur auf das Gegenteil
null > 0
. Da greaterThan genauso definiert ist wie lessThan liefertnull > 0
->false
. Das heißt für JavaScript(null <= 0) = !(null > 0)
->true
Detaillierter Artikel, der das Verhalten im Detail erklärt: Javascript : The Curious Case of Null >= 0
Quelle: What the f*ck JavaScript?
Standort Hannover
newcubator GmbH
Bödekerstraße 22
30161 Hannover
Standort Dortmund
newcubator GmbH
Westenhellweg 85-89
44137 Dortmund