25

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

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

break似乎完全没有必要的地方,有什么理由让它存在吗?

4

4 回答 4

29

该声明可能在引入声明break;之前就已经存在。return因此,它变得多余并且可以被删除。

实际上,当您通过jslint运行该代码时,它会显示此错误:

“返回”后无法到达“中断”。

是否听从这个建议取决于你;如果您在确定特定样式之前尝试了一些东西,这可能会在开发过程中有所帮助。

这是另一种写作风格,有些人可能会认为这是一种更好的做法:

var retval = null;
switch (something) {
    case 'alice':
        retval = something;
        break;
    // ...
}
return retval;
于 2013-08-23T02:18:46.087 回答
5

break告诉 javascript 停止评估switch块中的案例。代码执行在右switch括号之后继续。示例代码中的return语句确实会阻止任何超出它的内容,包括其他case语句和switch块后面的任何内容。

break习惯性地在每种情况下都发表声明。如果我写了一个没有 a 的案例,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-23T01:41:12.113 回答
1

关键字用于结束语句,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-23T01:54:24.227 回答
-3

这个案子其实是很有必要的

你有一个案子,那么你需要从那个案子中解脱出来,否则其他案子也会被提起。

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

switch(casein){
case 1:{
break;
}
case 2:{
break
}
}
于 2013-08-23T01:40:57.977 回答