javascript - 使用 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 来完成这个任务和使用操作符有什么区别||
呢?
编辑:我犯了一个错误,使用 = 而不是 ===,所以它得到了修复,但我仍然想知道是否有任何区别,并且对于特定用例更有效。
解决方案
问题在于=
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 的值。
推荐阅读
- kubernetes - 从 GitLab CI 作业向 Kubernetes Pod 发送信号
- html - 如何创建 if else 语句以从角度删除项目
- javascript - 我可以在不安装 Redux 的情况下在 React 应用程序中受益于 Redux 的核心原则吗?
- c++ - 您可以使用 Google Test 将复杂类型传递给参数化测试吗?
- node.js - 在没有目录的firebase存储中获取文件
- django - 使用 Django 通道发送图像
- c - 当我尝试在 int d 中输入一些值时,为什么链表会出错?
- java - 无法使用来自集群外部机器(Windows)的 java 类的 JDBC 连接到 Kerberized HIVE/hadoop 集群(linux)
- c++ - 在 Visual Studio 的同一个项目中创建多个 C++ 文件
- javascript - Shopify:单击按钮时如何将产品名称添加到输入字段表单?