只要我记得我已经避免使用switch语句.实际上,我不记得它曾经进入我的意识作为一种可能的做事方式,因为它早在我的头脑中钻了它只不过是转换语句中的一个错误.然而,今天我遇到了一些在设计中使用它的代码,这让我立刻想知道社区中的每个人都认为有关switch语句的漏洞.
这是编程语言应该明确不允许的东西(比如C#,但它提供了一种解决方法),还是任何语言的功能都足以留给程序员手中?
编辑: 我没有具体到达我的意思.我经常使用这种类型:
switch(m_loadAnimSubCt){
case 0:
case 1:
// Do something
break;
case 2:
case 3:
case 4:
// Do something
break;
}
Run Code Online (Sandbox Code Playgroud)
但是,我很担心这样的事情.
switch(m_loadAnimSubCt){
case 0:
case 1:
// Do something but fall through to the other cases
// after doing it.
case 2:
case 3:
case 4:
// Do something else.
break;
}
Run Code Online (Sandbox Code Playgroud)
这种方式只要大小写为0,1就会在switch语句中执行所有操作.我已经通过设计看到了这一点,我只是不知道我是否同意以这种方式使用switch语句.我认为第一个代码示例非常有用且安全.第二个似乎有点危险.
我有以下开关简单案例:
let ca: string = "2";
switch (ca) {
case "2":
console.log("2");
case "1":
console.log("1");
default:
console.log("default");
Run Code Online (Sandbox Code Playgroud)
}
我试图理解为什么这段代码的输出是:
2
1
default
Run Code Online (Sandbox Code Playgroud)
我的预期输出是
2
default
为什么它的印刷品
1
即使 ca 不等于“1”?
编辑:我知道我可以添加break声明 - 我只是想了解为什么会case "1"发生,如果ca="2"
谢谢。
我的代码不是很长,所以我把它全部粘贴在这里。
代码不完整,但是当我运行它时,它首先跳转到它应该的 case“start”,然后跳转到 case“end”。我可以看到它,因为它打印了两个块的控制台日志文本。为什么会跳到“结束”的情况下?
<html>
<body>
<script>
function stepStream(stream,step){
switch (stream[step]){
case "start":
console.log("Started reading stream...");
case "end":
var success = "Finished reading dataStream.";
console.log(success);
return success;
default:
throw "Data stream format is bad";
case "gesture":
console.log("Running case gesture! But why?");
step+=1;
stepStream(stream,step);
case "say":
step+=1;
stepStream(stream,step);
case "sleep":
step+=1;
stepStream(stream,step);
}
}
var sentence1 = "Where are my bananas? I thought you put them in my bag?";
var sentence2 = "This is a rather irritating situattion.";
var dataStream = …Run Code Online (Sandbox Code Playgroud) 我有一个switch语句。它几乎可以正常工作,但是它不仅显示一个案例,还显示所选案例,然后显示默认案例。这是我的代码:
var people = {
names: ["Sam", "Tim", "Steve"],
emails: ["sam@email.com", "timm@messages.org", "stevieG@youhavemail.com"],
phonenums: [1111, 2222, 4545]
}
var search = prompt("Type in someone's name to find their phone number and email.");
switch (search) {
case people.names[0]:
alert(people.names[0] + "'s email: " + people.emails[0] + " phone number: " + people.phonenums[0]);
case people.names[1]:
alert(people.names[1] + "'s email: " + people.emails[1] + " phone number: " + people.phonenums[1]);
case people.names[2]:
alert(people.names[2] + "'s email: " + people.emails[2] + " phone number: …Run Code Online (Sandbox Code Playgroud)