Javascript ODER Betreiber nicht in der if-Anweisung

Ich versuche, dieses Javascript etwas zu tun, wenn der Tag der Woche entspricht einem der Tage aufgeführt, in meine Aussage, als auch die Beschränkung auf zwischen 17:00 und 19:00 Uhr, aber der ODER die Betreiber nicht so funktioniert, wie ich erwartet hatte, ich bin neu in JS und ich Frage mich, ob ich bin Missverständnis die Verwendung dieses operators. Wenn ich auf der Liste einen Wert für nur einen Tag in der Woche, statt 3 wie in meinem Beispiel, der code funktioniert wie ich es mir erhofft hatte.

var d = new Date();
var dayOfWeek = d.getDay(); //0 = Sunday
var hour = d.getHours();

if ( dayOfWeek == 4 || 5 || 6 && hour >= 17 && hour < 19 ){
    //do stuff
  } else {
    //do other stuff 
} 
  • Verwenden Sie es falsch, wird es sein: if ( dayOfWeek == 4 || dayOfWeek == 5 || dayOfWeek == 6 && hour >= 17 && hour < 19 ) {
  • dayOfWeek == 4 || 5 || 6 ungültig ist in javascript, die Sie wahrscheinlich wollen: [4,5,6].indexOf(dayOfWeek) > -1 && hour >= 17 && hour <19 -> beachten Sie, dass dieser Ansatz etwas anders (über ein array).
  • Formulieren Sie die Bedingung für jede Bedingung!
  • Was denken ließ Array#indexOf ? #Amazing
  • es ist einfacher und schneller zu Lesen. Auch, es ist mehr mantainable wenn Sie jemals daran denken, die "sourcedays" generiert wird dinamically (entweder von einer externen Quelle, entweder aus einer Berechnung). Ich bin eher am überlegen, ob ich der einzige bin, aber über dieses, ich hasse es zu schreiben 3 Zustand Aussagen, wenn Sie können zusammengefasst werden in einer einzigen Zeile ein 😛
  • dayOfWeek == 4 == true oder false. In der Erwägung, dass dayOfWeek == 4 || 5 ergibt true oder 5. In der Erwägung, dass dayOfWeek == 4 || 5 || 6 noch Ertrag true oder 5. Es muss nicht tun, was Sie wollen.
  • Yeah! Gut, haben kürzere und nicht-repetitive code 🙂
  • Mögliche Duplikate von Oder operator nicht in der IF-Anweisung Node.js

InformationsquelleAutor Sam Assoum | 2017-06-30
Schreibe einen Kommentar