看看你的第一個條件:
if (choice1 === "rock") {
if (choice2 === "scissors");
} else {
return ("rock wins");
}
所以,如果choice1
是搖滾,你進入if
- 塊(這實際上並不返回任何東西,但因爲在這種情況下choice1
實際上是"paper"
它會進入else
- 塊,無條件返回"rock wins"
。嘗試重構它是這樣的:
if (choice1 === choice2) {
return("The result is a tie!");
}
if (choice1 === "rock") {
if (choice2 === "scissors") {
return ("rock wins");
} else {
return ("paper wins");
}
}
if (choice1 === "paper") {
if (choice2 === "rock") {
return ("paper wins");
} else {
return ("scissors wins");
}
}
if (choice1 === "paper") {
if (choice2 === "scissors") {
return ("scissors wins");
} else {
return ("rock wins");
}
}
但是,嘿,讓我們看看吧。嘗試把你的選擇到一個數組:
var choices = ["rock", "paper", "scissors"];
現在,請注意在右邊的項目總是擊敗項目向左(如果我們認爲陣列環繞)。我們如何使用它來簡化代碼?那麼我們就可以比較每個選擇的指標,同時注意處理剪刀石頭對比的邊緣情況:
var x = choices.indexOf(choice1),
y = choices.indexOf(choice2);
if (x === y) {
return("The result is a tie!");
} else if (x > y) {
if (x == 3 && y == 0) {
return choice2 + " wins";
} else {
return choice1 + " wins";
}
} else {
return choice2 + " wins";
}
但是我們可以使用remainder operator(%
)這裏更容易地處理的邊緣情況:
var choices = ["rock", "paper", "scissors"];
var compare = function (choice1, choice2) {
var x = choices.indexOf(choice1),
y = choices.indexOf(choice2);
if (x === y) {
return("The result is a tie!");
}
return (((x - y) % 3) > 0 ? choice1 : choice2) + " wins";
}
'if(choice1 ===「paper」){if(choice2 ===「rock」);如果兩個條件都是真的,或者你正在試圖用這種方法做什麼,那麼你是不是該如何測試。閱讀邏輯運算符:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators –
也許這會幫助 - http://bit.ly/19NPQLh –
問題後分號'if'語句。 – elclanrs