Hi,
foo && bar ? qux : baz
foo and bar ? qux : bazIn der ersten Zeile wird zunächst foo und bar berechnet und dessen Ergebnis als Bedingung für den ternären Operator verwendet. Für die zweite Zeile ist bar die Bedingung und das Ergebnis (qux oder baz) ist der rechte Operand vom and. Das hat auch Auswirkungen auf das Kurzschluss-Verfahren. Wenn in der zweiten Zeile foo schon false ergibt, wird der Teil rechts vom and nicht mehr ausgewertet, weil das Ergebnis sich dadurch nicht ändert. Die &&-Variante führt immerhin qux oder baz aus. (Ist vor allem von Belang, wenn qux/baz Funktionen mit Nebenwirkungen sind.)
Natürlich umgeht man diese Unsicherheit und bringt seine Intention deutlicher zum Ausdruck, wenn man die zusammengehörigen Teilausdrücke klammert.
danke dedlfix für die sehr ausführliche Antwort.
Auch wenn ich nicht genau weiß, für was das ? und : steht, verstehe ich aber nun um was es bei der Priorität geht. Wo es auch Sinn macht, hast du auch schon genannt mit Nebenwirkungen.
Danke nochmals.
Grüße