streuner
12-01-2010, 10:28
Hi.
Hab was interessantes gefunden im Netz (JavaScript):
var str = '0';
alert('str==true => ' + (str == Number(true)) + '\n' + '!str==true => ' + (!str == Number(true)));
Warum ist in dem Fall der Wert weder wahr noch unwahr (ist ja beides mal 'false')? Mir leuchtet das gerade irgendwie nicht ein, oder hab ich jetzt einfach ein Brett vorm Kopf?! Danke für die Erklärung.
mfg streuner
AmicaNoctis
12-01-2010, 10:38
Der Vergleich muss
str != Number(true)
lauten. Dass
!str == Number(true)
false ist, ist total logisch.
Warum castest du true/false auf number? Das ergibt doch keinen Sinn. Aufgelöst ergibt sich
'0' == 1 was false ist und
!'0' == 1 was noch weiter aufgelöst
!true == 1 und schließlich
false == 1 ergibt und logischerweise auch false ist.
Also absolut nicht interessant und völlig logisch.
Amica
streuner
12-01-2010, 10:50
Der Vergleich muss
str != Number(true)lauten. Dass
!str == Number(true)false ist, ist total logisch.
Warum castest du true/false auf number? Das ergibt doch keinen Sinn. Aufgelöst ergibt sich
'0' == 1 was false ist und
!'0' == 1 was noch weiter aufgelöst
!true == 1 und schließlich
false == 1 ergibt und logischerweise auch false ist.
Also absolut nicht interessant und völlig logisch.
Amica
Hm...bin noch nicht wirklich wach anscheinend*gähn*! Ich hab diesen Code bei selfhtml im Forum gefunden, wo darüber diskutiert wurde. thanx.
mfg streuner
streuner
12-01-2010, 11:56
Schau mal hier:
SELFHTML Forumsarchiv / 2009 / Oktober / JS Typprobleme (http://forum.de.selfhtml.org/archiv/2009/10/t192110/#m1281687)
mfg streuner
Einen Thread mit Beispielen für richtig komisches Javascript-Verhalten gibts bei Stack Overflow:
Strangest language feature (http://stackoverflow.com/questions/1995113/strangest-language-feature) (2., 3. und 5. Antwort)
Kannte ich viele noch nicht.
In javascript
'5' + 3 gives '53'
whereas
'5' - 3 gives 2