2017-03-13 1 views
-2

si ce code ne de travaux de cours:Pourquoi ce commutateur renvoie-t-il un mauvais résultat?

<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<p id="demo"></p> 
 

 
<script> 
 
var day; 
 
switch (new Date().getDay()) { 
 
    case 0: 
 
     day = "Sunday"; 
 
     break; 
 
    case 1: 
 
     day = "Monday"; 
 
     break; 
 
    case 2: 
 
     day = "Tuesday"; 
 
     break; 
 
    case 3: 
 
     day = "Wednesday"; 
 
     break; 
 
    case 4: 
 
     day = "Thursday"; 
 
     break; 
 
    case 5: 
 
     day = "Friday"; 
 
     break; 
 
    case 6: 
 
     day = "Saturday"; 
 
} 
 
document.getElementById("demo").innerHTML = "Today is " + day; 
 
</script> 
 

 
</body> 
 
</html>

mais sans la déclaration break; il ne marche pas:

<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<p id="demo"></p> 
 

 
<script> 
 
var day; 
 
switch (new Date().getDay()) { 
 
    case 0: 
 
     day = "Sunday"; 
 
    case 1: 
 
     day = "Monday"; 
 
    case 2: 
 
     day = "Tuesday"; 
 
    case 3: 
 
     day = "Wednesday"; 
 
    case 4: 
 
     day = "Thursday"; 
 
    case 5: 
 
     day = "Friday"; 
 
    case 6: 
 
     day = "Saturday"; 
 
} 
 
document.getElementById("demo").innerHTML = "Today is " + day; 
 
</script> 
 

 
</body> 
 
</html>

Je me demande pourquoi il affichera "saturé ay "si j'omets la déclaration de rupture même samedi n'est jamais le cas puisque aujourd'hui c'est mardi. Savez-vous pourquoi il ira dans le cas 6 et la sortie samedi au lieu de rien lorsque l'instruction de rupture est omise? merci pour votre aide.

+4

Lecture. Ne présumez pas. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch –

+2

comprendre le rôle de 'break', alors vous aurez un moment d'eureka –

Répondre

2

La raison pour laquelle vous avez besoin d'une instruction break est que switch fonctionne différemment. Lorsque vous avez plusieurs conditions comme celle-ci, il commence à partir du match et continue jusqu'à la fin ou jusqu'à ce qu'il soit interrompu avec break. Ainsi, mardi, le flux de code actuel est comme ceci:

case 2: 
    day = "Tuesday"; 
    day = "Wednesday"; 
    day = "Thursday"; 
    day = "Friday"; 
    day = "Saturday"; 

Et vous vous retrouvez avec Saturday. Vous pouvez facilement le voir si vous parcourez le code dans un débogueur (utilisez les outils de développement Chrome, par exemple).

Si vous mettez break à la fin de chaque case, le flux sera comme ceci:

case 2: 
    day = "Tuesday"; 
    break; 

Et vous vous retrouvez avec Tuesday.

0

break est de terminer l'exécution des instructions qui ne devraient s'exécuter que dans ce cas. Si vous n'avez pas de pause, l'exécution des instructions se poursuivra jusqu'à atteindre le dernier cas ou le cas par défaut.