繁体   English   中英

如何将此 if, else if 语句转换为 switch 语句?

[英]How can I convert this if, else if statement to switch-statement?

我是 javascript 的新手,刚刚掌握了它的窍门。 我为石头,纸,剪刀游戏作品编写的这段代码。 它会为用户和计算机更改所选选项的颜色,如果是平局,则将其更改为黑色。 只是想知道它是否需要重构? 以及如何将其转换为 switch 语句?

我只是无法掌握使用带有两个参数的 switch 语句的窍门。

switch(userChoice, computerChoice){
case userChoice === computerChoice //or 'r' === 'r' :
 //code block
break;
} 

似乎不起作用。

function changeColor (userChoice, computerChoice) {

// If it's a draw, change color to black circle

if (userChoice === computerChoice) {
    document.getElementById(userChoice).classList.add('draw-pick');
    setTimeout( () => {
        document.getElementById(userChoice).classList.remove('draw-pick');
    }, 1000)

// If not a draw, change user pick to green and computer pick to red

} else if (userChoice === 'r' || 's' || 'p' && computerChoice === 'r' || 's' || 'p' ) {
    document.getElementById(userChoice).classList.add('user-pick');
    setTimeout( () => {
        document.getElementById(userChoice).classList.remove('user-pick');
    }, 1000)
    document.getElementById(computerChoice).classList.add('comp-pick');
    setTimeout( () => {
        document.getElementById(computerChoice).classList.remove('comp-pick');
    }, 1000)
}   

}

效果很好,只是对重构和 switch 语句感到好奇。

通常你应该对 2 个以上的情况使用 switch-case 语句,但无论如何,看看这里:

 const a = 1 const b = 2 const c = 1 function useSwitch(a,b) { switch (a) { case b: console.log("first case") break case 1: case 5: console.log("second / third case") break } } useSwitch(a,b) useSwitch(a,c) useSwitch(5,b) console.log("======") function useIfElse(a, b) { if (a === b) console.log("first case") else if (a === 1 || a === 5) console.log("second / first case") } useIfElse(a,b) useIfElse(a,c) useIfElse(5,b)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM