web-dev-qa-db-fra.com

boîtier de commutation avec retour et pause

Par curiosité, je vois souvent des situations telles que:

switch(something) {
    case 'alice':
        return something;
    break;
}

Où la break semble être complètement inutile, y a-t-il une raison pour que ce soit là quand même?

19
RienNeVaPlu͢s

L'instruction break; était peut-être présente avant l'introduction de l'instruction return. En tant que tel, il est devenu redondant et peut être supprimé.

En fait, lorsque vous exécutez ce code via jslint , il affichera cette erreur:

Inaccessible 'pause' après 'retour'.

Que ce soit ou non attentif à ce conseil est à vous; cela peut être utile au cours du développement si vous essayez plusieurs choses avant de choisir un style particulier.

Ceci est un style d'écriture alternatif qui pourrait être considéré comme une meilleure pratique:

var retval = null;
switch (something) {
    case 'alice':
        retval = something;
        break;
    // ...
}
return retval;
23
Ja͢ck

break indique à javascript d'arrêter l'évaluation des cas dans le bloc switch. L'exécution du code continue au-delà de la tranche switch de fermeture. L'instruction return dans l'exemple de code empêchera en effet toute trace de son passé, y compris les autres instructions case et tout ce qui suit le bloc switch

Je mets une déclaration break dans chaque cas par habitude. Si j’écrivais un cas sans break, je pourrais copier et coller des blocs de code dans le futur et l’absence de déclaration break deviendrait un bogue comme celui-ci:

function whereLivesA(species){
  switch(species){
    case 'worms': 
      // Relying on return to prevent further code execution within the switch
      // block works but is ~bad~ smelly (according to plato :D)
      var habitat = 'dirt'
      return (species + ' live in ' + habitat);
    case 'bees':
      var habitat = 'Hive';
      break;
  }
  // Stuff to do after the switch statement (unless you returned already)
  var str = species+' live in '+habitat;
  return str;
}
console.log('whereLivesA');
console.log(whereLivesA("worms"));
console.log(whereLivesA("bees"));
  /* Output:
    whereLivesA
    worms live in dirt
    bees live in Hive
  */


function whereLivesB(species){
  switch(species){
    case "worms": 
      // what if future code changes remove `return` and don't add `break`?
      // return (species + ' live in ' + habitat)
      var habitat = 'dirt';
      // break;
    case "bees":
      var habitat = 'Hive'
      break;
  }
  // Stuff to do after the switch statement (unless you returned already)
  var str = species+' live in '+habitat;
  return str;
}
console.log('whereLivesB');
console.log(whereLivesB("bees"));
console.log(whereLivesB("worms"));
  /* Output:
    whereLivesB
    bees live in Hive
    worms live in Hive
  */


function whereLivesCorrect(species){
  switch(species){
    case "worms": 
      var habitat = 'dirt';
      break;
    case "bees":
      var habitat = 'Hive'
      break;
  }
  // Stuff to do after the switch statement (unless you returned already)
  var str = species+' live in '+habitat;
  return str;
}

console.log('whereLivesCorrect');
console.log(whereLivesCorrect("bees"));
console.log(whereLivesCorrect("worms"));
  /* Output:
    whereLivesCorrect
    bees live in Hive
    worms live in dirt
  */

Débutants JS: si vous ne souhaitez pas l'enregistrer dans un fichier et exécuter node filename, vous pouvez appuyer sur F12 et coller ce script ou d'autres scripts autonomes dans la console de votre navigateur pour l'exécuter. 

Si vous utilisez node.js, vous pouvez également taper node sur une ligne de commande pour démarrer une console node et la coller à cet endroit.

4
Plato

Le mot clé break est utilisé pour terminer l'instruction ou pour quitter la boucle afin qu'elle ne continue pas à s'exécuter.

par exemple:

html

what's your age?: <input type="text" id="ageOf"><br>
<input type="submit" onSubmit="postReply();">
<div id="reply"></div>

js

var userResponse = document.getElementById('ageOf');
var response = document.getElementById('reply');

function postReply() {
  switch(ageOf) {

    case 1: ageOf<18 {
      response.innerHTML = "You are still young.";
      break;
    }

    case 2: ageOf>18 && ageOf<45 {
      response.innerHTML = "You are getting up there...";
      break;
    }

    case 3: ageOf >= 45 {
      response.innerHTML = "You are over the hill!";
      break;
    }
}

ainsi, lors de la soumission, le formulaire doit appeler function postReply(), vérifier la réponse de l'utilisateur et, en fonction de la valeur, renvoyer l'une de ces déclarations.

0
matt6frey