我想嘗試使用!==條件。為什么此代碼記錄“無效選擇”且未定義?
const getUserChoice = userInput => {
userInput = userInput.toLowerCase();
if (userInput !== 'rock' || userInput !== 'paper' || userInput !== 'scissors') {
console.log('Invalid choice');
} else {
return userInput;
}
};
console.log(getUserChoice('paper'));
我想嘗試 !== 而不是 === if 陳述句用于石頭剪刀布游戲。問題是語法還是邏輯?
uj5u.com熱心網友回復:
無論 的值如何,此條件都將始終為真userInput:
userInput !== 'rock' || userInput !== 'paper' || userInput !== 'scissors'
您想使用&&而不是||,如下所示:
userInput !== 'rock' && userInput !== 'paper' && userInput !== 'scissors'
這樣,您只會看到Invalid choice是否userInput不是三個允許值之一。
最后,您看到undefined是因為您正在記錄 的輸出getUserChoice,但在陳述句被命中getUserChoice時不回傳任何內容。if
uj5u.com熱心網友回復:
你得到Invalid choice是因為短路評估。這意味著,邏輯OR (||)運算式從左到右進行評估,任何左側的值都得到真值,然后其余的將不被評估。
userInput !== 'rock' || userInput !== 'paper' || userInput !== 'scissors'
當userInput等于paper并執行上述條件時,第一個得到truthy-vaule,因為paper和rock不一樣。這樣,其余的將不會被評估(userInput !== 'paper' || userInput !== 'scissors')。該條件變為 true 并已記錄invalid choice。在你沒有回傳任何東西的情況下,getUserChoice函式 return undefined。
uj5u.com熱心網友回復:
您的函式不會在 true if 路徑上回傳任何內容,而只會在 else 路徑上回傳。
if(x==="a" || x==="b" || ...)(aka if(!(...)))的反面是if(x!=="a" && x!=="b" && ...)你需要交換||to&&和&&to ||,而不僅僅是===to!==和!==to ===。
uj5u.com熱心網友回復:
這更像是一個邏輯問題。您要求代碼檢查用戶提交的值是否與“rock”不同或與“paper”不同或與“scissor”不同。
因此,如果您嘗試插入一個好的值,例如“paper”,則無論如何檢查都會通過,因為“paper”無論如何都不同于“rock”或“scissor”。
在這種情況下,您可能需要檢查用戶傳遞的單詞是否與“paper”、“rock”和“scissor”不同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/449327.html
標籤:javascript if 语句
上一篇:如果條件正確,顯示什么錯誤?
