In tutte le classifiche JavaScript operatore di precedenza che riesco a trovare (come this one e this one), il logico AND (&&
) ha leggermente precedenza maggiore alla logica OR (||
).Esempio di espressione in cui la precedenza di AND (&&) su OR (||) è importante?
Non riesco a capire un'espressione in cui il risultato è diverso da quello che sarebbe se avessero la stessa precedenza. Immagino che ci debba essere un modo per fare in modo che siano importanti o che siano elencati come aventi la stessa precedenza se non lo fossero.
Ad esempio:
0 || 2 && 0 || 3
è 3
, ma non importa come mi slice che in su, è sempre sarà 3
:
(0 || 2) && 0 || 3
0 || (2 && 0) || 3
(0 || 2 && 0) || 3
0 || 2 && (0 || 3)
0 || (2 && 0 || 3)
Se faccio quel primo 0
qualcosa altrimenti (come 4
), il risultato è sempre 4
perché il primo ||
non guarda nemmeno sul lato destro. Se scambio lo 0
e 3
nell'ultimo ||
in giro, il risultato rimane 3
.
Il più vicino mi è venuta è
0 || false && "" || NaN
... che è NaN
, mentre
0 || false && ("" || NaN)
... è false
, ma penso che sia spiegato puro sinistra-to semantica destra, non da &&
essendo precedenza più alta.
Mi manca solo, per quale espressione è importante che &&
abbia una precedenza più alta di ||
?
solo fare un ipotesi: come ripiego forse? – maioman
'true || false && false' –