En JavaScript, comme les autres langues, tous les opérateurs (comme &&
et ||
) a une precendence qui détermine l'ordre dans lequel il est évalué. &&
a une priorité plus élevée que ||
, donc il est évalué en premier. Par conséquent, chaque terme sur la gauche est and
ensemble. Même s'ils sont tous faux, le résultat global est vrai car il est or
édité avec "numbersandwords"
, ce qui donne la valeur true (comme le fait everything except 0, -0, null, false, NaN, undefined, or the empty string). La première chose que vous devez faire est de comparer quelque chose (vraisemblablement c
). Ensuite, vous pouvez modifier l'ordre d'évaluation utilisant des parenthèses, qui a une priorité plus élevée que toute autre chose:
if(a === 4 && b === true && (c === "words" || c === "numbersandwords")) DoSomething();
Vous pouvez briser le test en plusieurs if
déclarations si vous pouvez éventuellement faire quelque chose de légèrement différent en fonction la valeur de c
(ou il exprime juste mieux votre intention):
if(a === 4 && b === true)
{
if(c === "words" || c === "numbersandwords")
{
DoSomething();
}
}