Ka *_*Mok -1 javascript loops switch-statement
以 FizzBuzz 为例,for 循环中的这个 switch case 在每个 case 之后使用 break。
for (num = 1; num <= 100000; num ++) {
switch (true) {
case (num % 15 == 0):
console.log("FizzBuzz");
break;
case (num % 3 == 0):
console.log("Fizz");
break;
case (num % 5 == 0):
console.log("Buzz");
break;
default:
console.log(num);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
在 Mozilla 的文档中,他们说...
与每个 case 标签相关联的可选 break 语句确保程序在执行匹配的语句后中断 switch 并在 switch 之后的语句处继续执行。如果省略 break ,程序将在 switch 语句中的下一个语句处继续执行。
我假设它们的意思是当脚本检查 num % 15 == 0 时,如果没有中断并且即使它匹配 true,它也会转到 num % 3 ==0 等等。然后我用 100,000 个数字做了两个测试。一种有休息时间,一种没有休息时间。
我发现休息和不休息之间大约有 2 秒的差异,休息时间越来越短。但这已经过多次迭代了。
我的问题是,对于大多数构建小型应用程序的开发人员来说,在他们的循环中使用中断真的很重要吗?这是习惯和偏好的问题吗?想法?
当caseswitch 语句中的条件满足时,它将执行该 switch 语句中的所有代码块,直到遇到退出命令(认为break或return)。因此,break它不仅改变了性能速度,还改变了功能。
一个简单的方法来思考switch语句作为替代对链if-else语句。
您的switch代码可以很容易地编写
if (num % 15 == 0) {
console.log("FizzBuzz");
} else if (num % 3 == 0) {
console.log("Fizz");
} else if (num % 5 == 0) {
console.log("Buzz");
} else {
console.log(num);
}
Run Code Online (Sandbox Code Playgroud)
如果您删除这些break;语句,您将改变代码的实际运行方式。它会表现得更像
if (num % 15 == 0) {
console.log("FizzBuzz");
}
if (num % 3 == 0 || num % 15 == 0) {
console.log("Fizz");
}
if (num % 5 == 0 || num % 3 == 0 || num % 15 == 0) {
console.log("Buzz");
}
console.log(num);
Run Code Online (Sandbox Code Playgroud)
主要区别是缺乏else条件。
| 归档时间: |
|
| 查看次数: |
2279 次 |
| 最近记录: |