Это не так, как switch
работает - он оценивает вещь в скобках, в вашем случае statusOfBattle
, и выполняет регистр для значения, равного вещи.Ваше утверждение не будет соответствовать ни одному случаю, потому что свойство statusOfBattle
не будет равно самому объекту statusOfBattle
.
Я не совсем понимаю, как определить, кто атакует, но независимо от того, что вы моглипопробуйте использовать простое выражение if / else с некоторыми логическими операторами:
let doAttack = (firstAttacker, secondAttacker, statusOfBattle) => {
statusOfBattle = createNonHitMessages(secondAttacker, firstAttacker, statusOfBattle);
if (statusOfBattle.attackerDodged && !statusOfBattle.enemyBlocked) {
return 'attacker attack';
} else if (statusOfBattle.attackerBlocked) {
return 'attacker attack';
} else {
return 'enemy attack';
}
}
Сделайте так, чтобы вы могли даже сделать более короткую, более привлекательную версию с выражением ?
:
let doAttack = (firstAttacker, secondAttacker, statusOfBattle) => {
statusOfBattle = createNonHitMessages(secondAttacker, firstAttacker, statusOfBattle);
return statusOfBattle.attackerDodged ? 'attacker attack' : 'enemy attack';
}