Javascript切换未给出预期结果

时间:2018-06-08 03:07:14

标签: javascript

为什么以下回复说"你已经赢得了智能手表和马戏团门票"?

我认为胜利者必须等于3,以便选择包含"智能手表和"然后它会自动从列表中下载到默认值并将其添加到最后,让它说出“#34;你已经赢得了智能手表和马戏团的门票"但事实并非如此。

设置""的奖品如何使这个打印出来?

这是Udacity课程的一部分,我不明白这段代码是如何运作的,网站也不能很好地解释。



var prize = "";

switch (winner) {
  case 1:
    prize += "a trip for two to the Bahamas and ";
  case 2:
    prize += "a four piece furniture set.";
    break;
  case 3:
    prize += "a smartwatch and ";
  default:
    prize += "tickets to the circus.";
}

console.log("You've won " + prize);




3 个答案:

答案 0 :(得分:0)

如果获胜者点击案例3,它将附加智能手表字符串。然后,在该声明之后没有break,因此它也会落入默认情况。

答案 1 :(得分:0)

在switch语句中,当您使用case时,它将运行命令取决于您的变量(此代码中的获胜者)

如果您在案例中未使用break,则会一直使用break关键字或default案例。

因此,如果你的winner == 1,那么你的prize“两人前往巴哈马和四件套家具。”; ,它会到达{{ 1}}关键字,所以退出switch语句!

因此,如果您的break winner ==3 是智能手表并且是马戏团的门票。“

答案 2 :(得分:0)

我试图了解你的要求,我无法完全理解。 我会介绍获取

的逻辑
  

“你赢得了智能手表和马戏团的门票”

给你。

首先用空字符串“”初始化奖品。

prize = "";

当获胜者等于3时,奖品将是“智能手表”。

prize = "a smartwatch and ".
//becoz prize += "a smartwatch and ";

然后因为这条线后没有休息。因此,程序将继续默认情况并添加“马戏团门票”。奖品

prize = "a smartwatch and tickets to the circus.";
//becoz prize += "tickets to the circus.";

因此最终输出是“你赢了”+奖品;

result = "You've won " + prize;
// equal to
result = "You've won " + "a smartwatch and tickets to the circus.";