出于好奇,我经常看到这样的情况:
switch(something) {
case 'alice':
return something;
break;
}
如果似乎完全没有必要的地方出现了 break
,那么它存在的原因是什么?
出于好奇,我经常看到这样的情况:
switch(something) {
case 'alice':
return something;
break;
}
如果似乎完全没有必要的地方出现了 break
,那么它存在的原因是什么?
return
语句引入之前可能已经有break;
语句了。因此,它已变得多余并且可以删除。是否遵循这个建议取决于您;如果您试用了几种样式然后选择一种特定的样式,这可能在开发期间有所帮助。'return'之后的不可到达的'break'。
var retval = null;
switch (something) {
case 'alice':
retval = something;
break;
// ...
}
return retval;
break
告诉 JavaScript 在 switch
块中停止评估 case。代码执行将继续通过关闭的 switch
括号。在示例代码中,return
语句确实会防止进一步执行任何内容,包括其他 case
语句和跟随 switch
块的任何内容。break
语句。如果我编写了一个没有 break
的 case,那么将来我可能会复制和粘贴代码块,缺少 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初学者:如果您不想将其保存到文件并运行 node filename
,则可以按F12并将该脚本或其他自包含脚本粘贴到浏览器控制台中以运行它。
如果您使用node.js,则还可以在命令行中键入 node
来启动 node
控制台,然后将其粘贴到那里。
break
关键字用于结束语句或退出循环,以便它不会继续运行。
例如:
html
what's your age?: <input type="text" id="ageOf"><br>
<input type="submit" onSubmit="postReply();">
<div id="reply"></div>
js
function postReply() {
let ageOf = document.getElementById('ageOf');
let response = document.getElementById('reply');
switch(true) {
case ageOf<18:
response.innerHTML = "Keep practicing young padewan.";
break;
case ageOf>18 && ageOf<45:
response.innerHTML = "Much too learn, you have.";
break;
case ageOf >= 45:
response.innerHTML = "You have sage wisdom.";
break;
default:
response.innerHTML = "";
break;
}
}
因此,在提交时,表单应调用函数postReply()
,检查用户答案,并根据值返回其中一个语句。
ageOf < 18
看起来有点可疑。此外,OP 的问题实际上只涉及为什么有人会在 return
语句之后使用 break
语句。 - jahroycase
。例如,不要使用 case 1: ageOf<18{}
,而是使用 var s = 'young'; if(age>18){s='medium'}; if(age>45){s=old'}
,然后 switch(s){ case 'young': ...; break; case 'medium'... }
。 - Plato实际上情况非常必要
如果您有一个情况,则需要从该情况中退出,否则其他情况也会被选中。
在编程中使用情况经常被认为是不良实践,请尽量避免使用它们。
switch(casein){
case 1:{
break;
}
case 2:{
break
}
}
return
后使用 break
的。switch..case
只是提供了背景。此外,switch
块并不被普遍认为是不好的实践;只是在可选方案中不太常用。 - Jonathan Lonowski
break
作为建议块的结尾。但是,在一个return
语句之后,break
就成了无法到达的代码。所以它不会起作用,但也不会造成任何损害。 - Jonathan Lonowski