Как я могу преобразовать это if, else if оператор в switch-Statement? - PullRequest
0 голосов
/ 10 февраля 2019

Я новичок в 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.

1 Ответ

0 голосов
/ 10 февраля 2019

Обычно вы должны использовать оператор switch-case для более чем 2 случаев, но в любом случае посмотрите здесь:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...