出于好奇,我经常看到这样的情况:
switch(something) {
case 'alice':
return something;
break;
}
在break
看起来完全不必要的地方,有没有理由让它存在呢?
发布于 2013-08-23 09:41:12
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新手:如果您不想将其保存到文件并运行node filename
,您可以按F12并将此脚本或其他自包含脚本粘贴到您的浏览器控制台中以运行它。
如果使用node.js,还可以在命令行中输入node
以启动node
控制台并将其粘贴到该控制台。
发布于 2013-08-23 09:54:24
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;
}
}
因此,在提交时,表单应该调用function postReply()
,检查用户回答,并根据值返回其中一条语句。
发布于 2013-08-23 09:40:58
这个案例实际上是非常必要的。
如果你有一个案例,那么你需要从这个案例中分离出来,否则其他的案例也会被选中。
使用案例通常被认为是不好的做法,尽可能地远离它们。
switch(casein){
case 1:{
break;
}
case 2:{
break
}
}
https://stackoverflow.com/questions/18393327
复制相似问题