我正在运行以下代码,它只打印'Draw!'其他情况不起作用,我做错了什么?
const rps = (p1, p2) => {
var s = 'scissors';
var p = 'paper';
var r = 'rock';
var ans = '';
switch (rps) {
case (p1 == p && p2 == r):case (p1 == s && p2 == p): case (p1 == r && p2 == s):
ans = ('Player 1 won!');
break;
case (p1 == s && p2 == r): case (p1 == r && p2 == p): case (p1 == p && p2 == s):
ans = ('Player 2 won!');
break;
default: ans = ('Draw!');
break;
}
return ans
}
rps('paper','scissors')
switch
比较你输入的值(rps
是一个函数)和每个case
(将是true
或false
)。
由于函数永远不会匹配布尔值,因此您总是会遇到默认情况。
我究竟做错了什么?
试图使用switch
来做一些不太适合的事情。
请改用if
和else
。
你好!,
你误解了“开关”的使用,开关的工作原理如下:
切换表达式计算一次。
将表达式的值与每种情况的值进行比较。
如果匹配,则执行相关的代码块。
Soruce:https://www.w3schools.com/js/js_switch.asp
像Quentin所说,用“if”代替