因此,我对Javascript还是很陌生,在我的剪刀石头布游戏中,除决定获胜者的部分外,其他一切(用户输入,计算机生成的输入等)都可以正常工作。我输入的return语句仅触发联系。获胜或失败最终以“未定义”返回控制台,没有错误。
if (finalPlayer === finalAi)
{
return 'No one won';
}
//checks for player scissors choice
else if (finalPlayer === 'Scissors')
{
if (finalAi === 'rock')
{
return 'You lost.';
}
else
{
return 'You won!';
}
这是我的代码的一小段。有什么建议么?预先感谢!
想象一下,如果外部if... else if
的两个条件不成立,将会发生什么……什么都没有。这意味着您的函数将返回undefined
。
当然,在某些情况下都不是这样:
(finalPlayer === finalAi)
(finalPlayer === 'Scissors')
如果finalPlayer === 'paper'
怎么办?如果finalPlayer == 'rock'
怎么办?您应该处理所有可能。
NB:为什么您用大写字母拼写“ Scissors”而不是?”>
您的代码的简单扩展名可能是:
if (finalPlayer === finalAi) { return 'No one won'; } else if (finalPlayer === 'scissors') { if (finalAi === 'rock') { return 'You lost.'; } else { return 'You won!'; } } else if (finalPlayer === 'rock') { if (finalAi === 'paper') { return 'You lost.'; } else { return 'You won!'; } } else { // we know for sure finalPlayer == 'paper' now if (finalAi === 'scissors') { return 'You lost.'; } else { return 'You won!'; } }
现在您已经涵盖了所有可能的情况,并且不会获得任何
undefined
。
当然可以使用更短的方法来完成此操作,但是通过此操作,您将了解如何继续做下去,但又添加了其他可能性。
只需完成此答案,这就是使用较少的代码即可完成的操作:
let choices = ["scissors", "rock", "paper"];
let diff = choices.indexOf(finalPlayer) - choices.indexOf(finalAi);
return ["No one won", "You won", "You lost"][(diff+3)%3];