2017-01-22 5 views
-3

Ich habe eine einfache fizzbuzz hier:Bedingung (Anzahl% 3 === 0): Warum muss mit 0 verglichen werden?

var num = 1; 

while (num <= 20) { 
    switch(true){ 
     case(num%3 === 0 && num%5 === 0): 
      console.log('fizzbuzz'); 
      break; 
     case(num%3 === 0): 
      console.log('fizz'); 
      break; 
     case(num%5 === 0): 
      console.log('buzz'); 
      break; 
     default: 
      console.log(num); 
    } 
    num++; 
} 

Was ist die Bedeutung des Vergleichs zu 0 nach dem Modul in dieser Zeile: num%3===0?

Warum ist es nicht nur num%3?

+0

Wenn eine Zahl mod 3 gleich 0 ist. .? Was verstehst du nicht? – Li357

+0

Ich kann keine klare Erklärung finden, was dieser Vergleich bedeutet. Warum ist es nicht nur 'num% 3'? – jdev99

+1

'if (num% 3)' und 'if (num% 3 == 0)' sind exakte Gegensätze. Ersteres ist wahr, wenn die Zahl nicht teilbar ist, und letzteres ist wahr, wenn es – Li357

Antwort

1

Wenn Sie num%3 halten statt num%3===0 , Änderungen Bedeutung beacuse vollständig in einem der Fälle geben Sie es durch 3 teilbar, so sein sollte, wenn es nicht ist, wird es hier als num% auf Standard eingeben 3 nicht gleich 0 sein. Kurz gesagt, wir verwenden% Operator, um zu prüfen, ob es teilbar ist, wenn die Antwort 0 ist, wenn und nur wenn es teilbar ist, dh Rest ist 0

+0

Danke, ich habe nicht verstanden, dass Modul für Rest überprüft – jdev99

+0

Bitte schön :) – minigeek

0

Angenommen, num = 1, num% 3 ist gleich 1. Wenn Sie also if(num%3) auswerten, wird es als wahr ausgewertet. Wenn Sie jedoch if(num%3===0) auswerten, wird als false ausgewertet.

Darüber hinaus stellt das === sicher, dass Sie bei unterschiedlichen Typen keine Werte zulassen, jedoch wird in diesem Fall == und === keinen großen Unterschied machen.

Verwandte Themen