(PHP hat ||
und OR
JS nur ||
hat..)JS vs PHP: Rangzuweisungsoperator bei Verwendung mit logischen oder
JS. Nach MDN||
hat eine höhere Priorität als =
. So funktioniert das nicht:
a || a = 1;
, weil es als ausgewertet hat:
(a || a) = 1;
, die "in Zuordnung ungültig linke Seite" in einer Folge hat. Ich verstehe das. Das macht Sinn.
PHP. Nach PHP.net funktioniert es das gleiche für PHP: ||
vor =
. Allerdings benutze ich dies die ganze Zeit:
Warum funktioniert es in PHP? Und um das Ganze abzurunden: PHP OR
hat niedrigere Priorität als =
, so sollten diese nicht das gleiche tun:
$a || $a = 1;
$a OR $a = 1;
aber sie tun ... https://3v4l.org/UWXMd
denke ich JS‘||
arbeitet nach MDN des Tisch und OR
funktioniert wie PHP Tisch PHP, aber PHP ||
nicht funktionieren sollte, wie es der Fall ist.
Ist das noch eine weitere seltsame PHP Marotte?
Das Handbuch erwähnt auch dies:
Obwohl
=
eine niedrigere Priorität als die meisten anderen Betreiber hat, wird PHP Ausdrücke immer noch erlauben, ähnlich der folgenden:if (!$a = foo())
, wobei der Rückgabewert vonfoo()
in gesetzt wird$a
.
Die Präzedenztabelle diktiert PHP (!$a) = foo()
bewerten sollte, die keinen Sinn und sollte macht scheitern, aber PHP wertet es als !($a = foo())
, weil es Ausnahmen liebt.
Folgefrage: Was denken Sie, if ($d = $c && $e = $b && $f = $a)
tut? https://3v4l.org/3P2hN Ich verstehe es nicht ... Das verstehe ich den zweiten und dritten Fall (mit and
), nur nicht das, was im ersten Fall.
PHP Handbuch auch sagen Operator Vorrang und Assoziativität bestimmen nur, wie Ausdrücke gruppiert sind, sie geben keine Reihenfolge der Auswertung. PHP legt (im allgemeinen Fall) nicht fest, in welcher Reihenfolge ein Ausdruck ausgewertet wird und Code, der eine bestimmte Reihenfolge der Auswertung annimmt, sollte vermieden werden, da sich das Verhalten zwischen PHP-Versionen oder abhängig vom umgebenden Code ändern kann. – CY5
@ CY5 Was ist der Unterschied zwischen Gruppierung und Auswertung? Was macht die Gruppierung ohne die Bewertungsreihenfolge? – Rudie
PHP! = JS. Da ist deine Antwort. –