J'utilise Moment.JS pour vérifier si le jour en cours n'est pas un dimanche ou un samedi. Si ce n'est pas le cas, faites une opération.Else-Si les instructions en JavaScript semblent provoquer un comportement étrange dans Moment.js en semaine
Voici mon code:
let currentDay = moment().weekday();
if(currentDay !== 0 || currentDay !== 6){
doSomeOperation();
} else { console.log("we should get here on a Sunday"); }
Ce me prend tout son sens - si currentDay est pas le dimanche ou le samedi puis doSomeOperation();
(Pour le contexte, je suis en ce un dimanche.)
Cependant , il échoue et il exécute la méthode doSomeOperation();
dans le bloc if
. Je l'ai exécuté dans toutes les combinaisons possibles, mais cela échoue toujours. J'ai alors décidé de les faire fonctionner séparément.
if(currentDay !== 0){
doSomeOperation();
} else { console.log('you should get here'); }
Cela réussit - je reçois au bloc else
. Cela n'a aucun sens - parce que si cela a réussi, alors pourquoi ce qui précède a-t-il échoué?
J'ai finalement changé ce tour à ceci:
if ((currentDay === 0 || currentDay === 6)){
console.log('you should get here');
} else { doSomeOperation() }
Cela réussit et j'imprimer "vous devriez obtenir ici. Si j'inverse les opérateurs alors tous les contrôles passent. Ma question est qu'est-ce que je fais mal?
Salut @Nina - merci pour votre réponse. Pourquoi était-ce quand j'ai inversé les opérateurs, ils ont tous travaillé avec le OU logique? – xn139
cela ne fonctionne pas avec equal et or, car chaque partie est parfois 'true' et la condition est toujours' true'. –
Quand j'ai des problèmes avec if, j'essaie toujours de les transformer en questions pour voir si elles ont du sens. Si je ne peux pas alors, il y a généralement un problème avec le code. Ou le code est trop compliqué et doit être décomposé. –