首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带返回和断路的开关柜

带返回和断路的开关柜
EN

Stack Overflow用户
提问于 2013-08-23 09:35:16
回答 3查看 36K关注 0票数 24

出于好奇,我经常看到这样的情况:

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

break看起来完全不必要的地方,有没有理由让它存在呢?

EN

回答 3

Stack Overflow用户

发布于 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控制台并将其粘贴到该控制台。

票数 5
EN

Stack Overflow用户

发布于 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(),检查用户回答,并根据值返回其中一条语句。

票数 0
EN

Stack Overflow用户

发布于 2013-08-23 09:40:58

这个案例实际上是非常必要的。

如果你有一个案例,那么你需要从这个案例中分离出来,否则其他的案例也会被选中。

使用案例通常被认为是不好的做法,尽可能地远离它们。

switch(casein){
case 1:{
break;
}
case 2:{
break
}
}
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18393327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档