首页 > 解决方案 > 使用 else-if 和 JavaScript 有什么区别

问题描述

我正在创建一个石头剪刀布游戏来测试我对函数的了解。我编写了这段代码来查看用户是否输入了有效的石头、纸或剪刀:

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'));

它打印出 rock 而不是打印“Invalid Option”。

当我检查解决方案时,我看到了这个:

if (userInput === 'rock' || userInput === 'paper' || ... ) {
  return userInput;
} else {
  console.log('Error!');
}

那么使用 else-if 来完成这个任务和使用操作符有什么区别||呢?

编辑:我犯了一个错误,使用 = 而不是 ===,所以它得到了修复,但我仍然想知道是否有任何区别,并且对于特定用例更有效。

标签: javascriptif-statementlogical-operators

解决方案


问题在于=vs===运算符。 ===用于检查是否相等,=用于赋值。

当你写 if(userInput = 'rock') 它时,它意味着userInput被分配了 的值rock。你真正想要的是if(userInput === 'rock')

关于||运算符(也称为 OR),发生的是短路运算。如果你写A || B || C,会发生以下情况:

  1. A 被评估。如果值为true,则不评估 B 和 C。
  2. 如果 A 是false,那么 B 是evaluated
  3. 如果B为真,C则不评估。
  4. 否则,计算 C 并返回 C 的值。

推荐阅读