相关疑难解决方法(0)

Switch Statement Fallthrough ...是否允许?

只要我记得我已经避免使用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语句.我认为第一个代码示例非常有用且安全.第二个似乎有点危险.

coding-style switch-statement

109
推荐指数
9
解决办法
10万
查看次数

切换案例打字稿案例不适用于字符串

我有以下开关简单案例:

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"

谢谢。

javascript typescript

5
推荐指数
1
解决办法
9975
查看次数

javascript中切换大小写跳转到错误大小写(如何正确使用break命令)

我的代码不是很长,所以我把它全部粘贴在这里。

代码不完整,但是当我运行它时,它首先跳转到它应该的 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)

javascript switch-statement

3
推荐指数
1
解决办法
769
查看次数

switch语句default总是显示default

我有一个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)

javascript

1
推荐指数
1
解决办法
60
查看次数