切换和案件陈述混淆 - Javascript

时间:2016-07-21 20:21:21

标签: javascript switch-statement

我在解决JavaScript中的switch和case的某些方面时遇到了问题。我的问题是为什么一个案例有时会在它旁边有一个字符串,有时为什么不呢。一个例子来自FreeCodeCamps课程。

这是它的链接,这是我想出的答案,我通过反复试验弄明白,但我不明白为什么。我的理解是,开关就像if / else if。我明白了。

*我在代码中注释了我的困惑

链接: https://www.freecodecamp.com/challenges/replacing-if-else-chains-with-switch

代码:

            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;  
            }

3 个答案:

答案 0 :(得分:0)

如果你的意思是为什么一个case有一个int而另一个有一个字符串,那是因为val的值不同。它可以是“bob”,42或其他任何东西,并根据它设置答案。

供参考:http://www.w3schools.com/js/js_switch.asp

答案 1 :(得分:0)

较旧的Javascript版本的一个缺陷是变量可以是任何类型。这被认为是一个缺陷,因为变量的类型有可能改变,并且可能使读者感到困惑。您的问题是一个完美的例子,说明为什么Javascript具有扩展语言,例如打字稿,使其类型安全。

你是正确的switch语句就像一个if语句。它检查int和字符串,因为变量val可以是任何类型。第一种情况检查val是否保持字符串值“bob,第二种情况检查val是否保存整数值42,依此类推。”

答案 2 :(得分:0)

好的,所以如果它的" bob",bob,162,它只是课程让我写它的方式并没有什么不同,所以我可以通过并转到下一个课? - 好像我只是过度思考" WHYS"所以我不会感到困惑。