您应该考虑交换机中的1值吗?

问题描述 投票:0回答:2

我正在申请编程课程,在我们被接受之前,我们有59项任务要做。我在这里努力进行switch练习,希望有人可以帮助我。

向我显示代码

还记得骰子模拟器吗?继续并将if-else if-else语句转换为switch语句,并查看它如何变得更易于阅读。

var dieRoll = Math.ceil(Math.random() * 6); 
if (dieRoll === 1) {
    console.log('You roll a 1.');
} else if (dieRoll === 2) {
    console.log('You roll a 2.');
} else if (dieRoll === 3) {
    console.log('You roll a 3.');
} else if (dieRoll === 4) {
    console.log('You roll a 4.');
} else if (dieRoll === 5) {
    console.log('You roll a 5.');
} else if (dieRoll === 6) {
    console.log('You roll a 6.');
} else {
    console.log('This die only has 6 sides man...');
}

所以现在,我应该将其转换为switch语句,这就是我要去的地方。

var dieRoll = Math.ceil(Math.random() * 6);
switch (dieRoll)    {
case '1' :
case '2' :
case '3' :
case '4' :
case '5' :
case '6' :
        console.log ('You roll a ' + dieRoll + '.');  
        break;
    default:
        console.log ('This die only has 6 sides man...');
}
console.log(dieRoll);

错误-您应该考虑开关中的1值。

我做错了什么?

非常感谢。

javascript switch-statement
2个回答
2
投票

A switchcase必须精确地与要切换的值相同。带有

var dieRoll = Math.ceil(Math.random() * 6);

dieRoll将是一个数字,从1到6。它将不是一个字符串,所以

case <someString>

将永远无法实现。

使用数字大小写代替:

var dieRoll = Math.ceil(Math.random() * 6);
switch (dieRoll) {
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
  case 6:
    console.log('You roll a ' + dieRoll + '.');
    break;
  default:
    console.log('This die only has 6 sides man...');
}

但是switch在这里使用很奇怪,为什么不只是

console.log('You roll a ' + Math.ceil(Math.random() * 6) + '.')

1
投票

在您的情况下,请使用numbers而不是strings,而不是:

case '1' :

用途:

case 1:

更不用说,switch运算符使用严格相等性(即===)将每种情况与您的值进行比较。因此,如果您编写了将返回'0' == 0true,但是在switch中进行了如下检查:'0' === 0并且它将返回false,因此请谨慎操作。

希望有帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.