Коммутационный корпус с возвратом и разрывом

Просто из любопытства я часто вижу ситуации вроде:

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

Где break кажется совершенно ненужным, есть ли какая-нибудь причина для его присутствия?

Ответы

Ответ 1

Оператор break;, возможно, был там до того, как был введен оператор return. Таким образом, он стал избыточным и может быть удален.

Фактически, когда вы запускаете этот код через jslint, он покажет эту ошибку:

Недопустимый "break" после "return".

Учитывать или не принимать во внимание этот совет, зависит от вас; это может быть полезно во время разработки, если вы пробуете несколько вещей, прежде чем опираться на определенный стиль.

Это альтернативный стиль письма, который некоторые могут утверждать, является лучшей практикой:

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

Ответ 2

break сообщает javascript о прекращении оценки случаев в блоке switch. Исполнение кода продолжается после закрытия скобки switch. Оператор return в коде примера действительно предотвратит дальнейшее его прохождение, включая другие операторы case и все, что следует за блоком switch.

Я положил оператор break в каждом случае по привычке. Если бы я написал случай без break, тогда я мог бы скопировать и вставить блоки кода в будущем, а отсутствие оператора break стало бы ошибкой:

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
  */

JS newbies: Если вы не хотите сохранять его в файл и запускать node filename, вы можете нажать F12 и вставить этот script или другие автономные скрипты в консоль вашего браузера, чтобы запустить его.

Если вы используете node.js, вы также можете ввести node в командной строке, чтобы запустить консоль node и вставить ее там.

Ответ 3

Ключевое слово break используется для завершения оператора или выхода из цикла, чтобы оно не продолжалось.

например:

HTML

what 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;
    }
}

поэтому при отправке форма должна вызвать function postReply(), проверить ответ пользователя и в зависимости от значения, он должен вернуть одно из этих утверждений.

Ответ 4

случай действительно очень необходим

У вас есть случай, тогда вам нужно сломаться от этого случая, а также другие случаи также подбираются.

использование случаев чаще всего считается плохой практикой, старайтесь держаться подальше от них.

switch(casein){
case 1:{
break;
}
case 2:{
break
}
}