Коммутационный корпус с возвратом и разрывом
Просто из любопытства я часто вижу ситуации вроде:
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
}
}