2017-09-24 4 views
-1

私はMoment.JSを使って、現在の日が日曜日か土曜日かをチェックしています。そうでない場合は、何らかの操作を行います。ここで JavaScriptのElse-Ifステートメントは、平日のMoment.jsで異常な動作を引き起こすようです。

は私のコードです:私に

let currentDay = moment().weekday(); 

if(currentDay !== 0 || currentDay !== 6){ 
    doSomeOperation(); 
    } else { console.log("we should get here on a Sunday"); } 

この完全な理にかなって - currentDayが、その後doSomeOperation();日曜日または土曜日でない場合(コンテキストの場合、私は日曜日にこれを実行しているよ。)しかし

それは失敗し、ifブロックのdoSomeOperation();メソッドを実行します。私は可能なすべての組み合わせでこれを実行しましたが、それでも失敗します。その後、別々に実行することに決めました。

if(currentDay !== 0){ 
     doSomeOperation(); 
    } else { console.log('you should get here'); } 

これは成功しました - 私はelseブロックに行きます。これが意味をなさない - それが成功すれば、なぜ上記は失敗するのだろうか?

私は最終的にこれにラウンドそれを変更:

if ((currentDay === 0 || currentDay === 6)){ 
console.log('you should get here'); 
} else { doSomeOperation() } 

をこれが成功したと、私は「あなたがここに来る必要がある」プリントアウト。私が演算子を逆変換すると、すべてのチェックが成功します。私の質問は私が間違っているのは何ですか?

答えて

2

両方の日を除外したいので、条件でANDをとる必要があります。

if (currentDay !== 0 && currentDay !== 6) { 
    // do some operations 
} 

条件を否定するために、あなたはDe Morgan's laws

if (currentDay === 0 || currentDay === 6) { 
    // saturday or sunday 
} else { 
    // other days 
    // do some operations 
} 
+0

こんにちは@Nina適用できます - お返事に感謝を。なぜ私は演算子を反転させた、彼らはすべて論理ORで働いたのですか? – xn139

+0

これはequalとorでは機能しません。なぜなら、すべての部分が時には 'true'であり、条件が常に' true'であるからです。 –

+1

if文に問題があるとき、私はいつも質問に変えて意味があるかどうかを調べます。私ができない場合は、通常、コードに問題があります。あるいは、コードが複雑すぎるので、コードを分解する必要があります。 –

関連する問題