我正在申请编程课程,在我们被接受之前,我们有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值。
我做错了什么?
非常感谢。
A switch
的case
必须精确地与要切换的值相同。带有
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) + '.')
在您的情况下,请使用numbers
而不是strings
,而不是:
case '1' :
用途:
case 1:
更不用说,switch
运算符使用严格相等性(即===
)将每种情况与您的值进行比较。因此,如果您编写了将返回'0' == 0
的true
,但是在switch中进行了如下检查:'0' === 0
并且它将返回false
,因此请谨慎操作。
希望有帮助:)