• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

erweiterte erklärung von if else bedingungen und ? :

hallo,

wenn ich irgendwelche lösungen zu problemen suche, finde ich immer häufiger eine form der if bedingung, die ich nicht verstehe.
gerade will ich die mausposition bestimmen und fand diesen code:
Code:
[FONT=monospace][COLOR=#000066][B]if[/B][/COLOR][COLOR=#66CC66]([/COLOR]!e[COLOR=#66CC66])[/COLOR] e = window.[COLOR=#006600]event[/COLOR];[/FONT]
bisher habe ich ifs immer zum vergleich von variablen genutzt... ich weiß dass das ! ein logisches nicht ist aber was soll "wenn e nicht ist" bedeuten? ist das einfach eine abfrage ob ein wert für e definiert ist?
außerdem verstehe ich diese abfrage mit ? und : nicht
gruß simon

Wie finde ich die Mausposition? [Javascript ist Toll!]
 
...aber was soll "wenn e nicht ist" bedeuten? ist das einfach eine abfrage ob ein wert für e definiert ist?
außerdem verstehe ich diese abfrage mit ? und : nicht
gruß simon

Wie finde ich die Mausposition? [Javascript ist Toll!]
Hehe, das ist mein Blog.

if(!e) bedeutet sowviel wie if not e, also wenn e keinen wahren Wert hat ist die Bedigung wahr. Das andere ist einfach eine verkürzte Schreibweise für eine Zuweisung und einer if Bedingung.
 
das is ja witzig :)
was ist ein wahrer wert? ein boolsches true oder auch ein definierter wert(z.b. eine zahl oder string)?

wie sähe das denn mit einer normalen bedingung aus?
ist
Code:
if(a==b) b--;
else b++;
das gleiche wie
Code:
a==b ? b--; : b++;
?
 
das is ja witzig :)
was ist ein wahrer wert? ein boolsches true oder auch ein definierter wert(z.b. eine zahl oder string)?

wie sähe das denn mit einer normalen bedingung aus?
ist
if(a=b) b--;
else b++;
das gleiche wie
a=b ? b--; : b++;
?
Ein wahrer Wert ist 'ne ganze Menge. Bei einem Objekt ist es alles was nicht null ist, bei einer Zahl alles was nicht die Zahl Null ist und nicht NaN, bei einem String, alles ausser einem Leerstring, usw. Das ist übrigens etwas was in vielen Programmiersprachen geht. if(bedingung) oder while brauchen keinen expliziten Vergleich, er ist manchmnal auch falsch.
Der verkürzten if Vergleich ist, wie gesagt, auch eine Zuweisung. Ein normaler if Vergleich nicht.
 
Ach, du hast den Vergleich aber falsch geschrieben. Aber das was du willst würde man dann eher so schreiben
Code:
b += a==b ? -1 : 1;
 
wenn ich das richtig verstanden habe, fragt dieses !e ob e ein wert zugewiesen wurde oder ob dieser 0 ist. wenn e keinen wert hat oder der wert 0 ist, bekommt e einen wert, wenn e schon einen hat, hat e ja schon einen und braucht keinen neuen. ist das der sinn dieser abfrage?
wie sähe denn eine normale bedingung bei deinem beispiel aus? ich habe das irgendwie noch nicht verstanden
aber schonmal vielen dank ;)
EDIT:
ahjaaaa.... ich glaub das ist mir zu kompiziert.. da bleib ich lieber bei der normalen if bedingung dann versteh ich auch was da steht.. oder gibt es einen anderen vorteil als der das es für den der das drauf hat übersichtlicher wird?
 
wenn ich das richtig verstanden habe, fragt dieses !e ob e ein wert zugewiesen wurde oder ob dieser 0 ist. wenn e keinen wert hat oder der wert 0 ist, bekommt e einen wert, wenn e schon einen hat, hat e ja schon einen und braucht keinen neuen. ist das der sinn dieser abfrage?
wie sähe denn eine normale bedingung bei deinem beispiel aus? ich habe das irgendwie noch nicht verstanden
aber schonmal vielen dank ;)
EDIT:
ahjaaaa.... ich glaub das ist mir zu kompiziert.. da bleib ich lieber bei der normalen if bedingung dann versteh ich auch was da steht.. oder gibt es einen anderen vorteil als der das es für den der das drauf hat übersichtlicher wird?
Wieso ist das kompliziert?
Code:
var wert = bedingung ? a : b;
Das ist wesentlich einfacher als
Code:
var wert;
if(bedingung) wert = a; else wert = b;

Und wegen der if Bedingung weiß ich nicht was ich noch erklären soll. Es gibt wahre Werte und unwahre, dabei kommt es darauf was für ein Typ die Variabel hat. Der vollständige Vergleich in dem Fall sähe so aus:
if(e === null)

EDIT: Ach so, der Sinn der abfrage ist der, dass der IE kein Eventobjekt der Funktion übergibt, sondern ein globales Eventobejtk verwendet.
 
Zurück
Oben