开关和case语句混淆-Javascript

开关和case语句混淆-Javascript,javascript,switch-statement,Javascript,Switch Statement,我在理解JavaScript中开关和大小写的某些方面时遇到了问题。我的问题是,为什么一个案例有时旁边有一个字符串,有时又没有。一个例子来自FreeCodeCamps课程 这是它的链接,这是我想出的答案,我通过反复试验找到了答案,但我不明白为什么。我所理解的是,开关与if/else-if类似。我确实理解 *我在代码旁边注释了我的困惑所在 链接: 代码: 如果你的意思是为什么一个案例有一个int,另一个案例有一个string,那是因为val的值不同。它可能是bob,42,或者其他任何东西,答案是基

我在理解JavaScript中开关和大小写的某些方面时遇到了问题。我的问题是,为什么一个案例有时旁边有一个字符串,有时又没有。一个例子来自FreeCodeCamps课程

这是它的链接,这是我想出的答案,我通过反复试验找到了答案,但我不明白为什么。我所理解的是,开关与if/else-if类似。我确实理解

*我在代码旁边注释了我的困惑所在

链接:

代码:


如果你的意思是为什么一个案例有一个int,另一个案例有一个string,那是因为val的值不同。它可能是bob,42,或者其他任何东西,答案是基于这个设置的


参考:

旧Javascript版本的一个缺陷是变量可以是任何类型。这被认为是一个缺陷,因为变量的类型可能会改变,并且会使读者感到困惑。你的问题是一个很好的例子,说明了为什么Javascript有扩展语言,比如typescript,使其具有类型安全性


您是对的,switch语句类似于if语句。它正在检查整数和字符串,因为变量val可以是任何类型。第一个案例检查val是否持有字符串值bob,第二个案例检查val是否持有整数值42,依此类推。

好的,所以如果它的bob,bob,162没有区别,这只是课程让我写它的方式,这样我就可以通过并进入下一课了?-似乎我只是简单地想了想原因,所以我不会感到困惑。

你读过这篇文章吗:你在匹配字符串或数字。该值不需要全部为一种类型。很好地解决了这个问题。
            function chainToSwitch(val) {
              var answer = "";
              // Only change code below this line

              switch(val) {

                case "bob": // Why is this a string?
                  answer = "Marley";
                  break;

                case 42: //Why doesn't this one have quotes around it?
                answer = "The Answer";
                 break;

                case 1:
                answer = "There is no #1";
                break;

                case 99:
                answer = "Missed me by this much!";
                 break;

                case 7:
                answer = "Ate Nine";
                break;

            }

              // Only change code above this line  
              return answer;  
            }