我正在創建一個石頭剪刀布游戲來測驗我對函式的了解。我撰寫了這段代碼來查看用戶是否給出了石頭、紙或剪刀的有效輸入:
const getUserChoice = userInput => {
userInput = userInput.toLowerCase();
if(userInput === 'rock'){
return userInput;
} else if(userInput === 'paper') {
return userInput;
} else if(userInput === 'scissor'){
return userInput;
} else {
console.log('Invalid Option');
}
};
當我else通過這樣做來測驗最后一個陳述句時console.log:
console.log(getUserChoice('water'));
它列印出巖石而不是列印“無效選項”。
當我檢查解決方案時,我看到了這個:
if (userInput === 'rock' || userInput === 'paper' || ... ) {
return userInput;
} else {
console.log('Error!');
}
那么使用 else-if 來完成這個任務與使用||運算子有什么區別呢?
編輯:我犯了一個錯誤,使用 = 而不是 ===,所以它得到了修復,但我仍然想知道是否有任何區別,并且對于特定用例更有效。
uj5u.com熱心網友回復:
問題出在=vs===運算子上。
===用于檢查相等性,=用于賦值。
當你寫的時候,
if(userInput = 'rock')
它意味著userInput被賦值為rock。你真正想要的是if(userInput === 'rock')
關于||運算子(也稱為 OR),發生的是短路操作。如果你寫A || B || C,下面會發生:
- A 被評估。如果值為
true,則不評估 B 和 C。 - 如果 A 是
false,那么 B 是evaluated。 - 如果
B為真,C則不評估。 - 否則,計算 C 并回傳 C 的值。
uj5u.com熱心網友回復:
使用||和使用if/之間沒有功能區別else。
在 JavaScript 中,||運算子的作業方式如下:
對于a || b,檢查是否a為真。如果是,請解決a。否則,解決b。
現在,您可能已經注意到,它的措辭與您描述if/else條件塊的行為的方式幾乎相同。在功能上,行為沒有區別。
在相關說明中,&&運算子以類似的方式作業,除非只有當ais truthy 將a && b決議為 時b。如果您曾經查看過縮小代碼,您有時會看到&&用于替換if陳述句,因為a && b功能相同if (a) { b; }但占用的字符更少。
我不建議在未縮小的代碼中使用這種方法,因為它肯定更難遵循,但它確實占用了更少的字符而不會產生不同的功能,這就是縮小器使用它的原因。有點類似于他們經常使用!0而不是true.
uj5u.com熱心網友回復:
不同之處在于 if else 陳述句僅在之前的 if/if elses 為 false 時才檢查/運行。||如果任何單個條件為真,則or ( ) 陳述句為真
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/316367.html
標籤:javascript if 语句 逻辑运算符
