QAQ_ing 2022-04-12 22:37 采纳率: 33.3%
浏览 25
已结题

求解:关于使用if与switch做相同判断时,判断结果不同的问题

现象:使用if与switch做判断时,判断结果不同


```javascript
<script>
            document.addEventListener("keydown", (event) => {
                if (event.key === "ArrowUp" || "Up") {
                    console.log("if", event.key, "up");
                } else if (event.key === "ArrowDown" || "Down") {
                    console.log(event.key, "down");
                } else if (event.key === "ArrowLeft" || "Left") {
                    console.log(event.key, "left");
                } else if (event.key === "ArrowRight" || "Right") {
                    console.log(event.key, "right");
                }
                switch (event.key) {
                    case "ArrowUp" || "Up":
                        console.log("switch", event.key, "up");
                        break;
                    case "ArrowDown" || "Down":
                        console.log("switch", event.key, "down");
                        break;
                }
            });
        </script>


###### 运行结果及报错内容 
控制台:

```javascript
测试.html:13 if ArrowUp up
测试.html:23 switch ArrowUp up
测试.html:13 if ArrowDown up
测试.html:26 switch ArrowDown down
测试.html:13 if ArrowLeft up
测试.html:13 if ArrowRight up

为什么所有的按键都能过 event.key === "ArrowUp" || "Up" 判断

  • 写回答

3条回答 默认 最新

  • 门前大桥下. 2022-04-13 08:55
    关注
    if中的逻辑判断出错了
    event.key === "ArrowUp" || "Up"  的执行时候  
    第一:先进行event.key === "ArrowUp" 赋值
    第二在进行   前面赋值结果 || "Up"  
    加入按下 a  
    第一 a=== "ArrowUp"    ---->返回false
    第二 false|| "Up"     ----->"up"
    第三:"up"if中进行boolen转化 为true  所以只要按下key if条件始终都是true  
    需要调整为
    event.key === "ArrowUp"  || event.key === "Up"
    if(event.key === "ArrowUp"  || event.key === "Up"){......}
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月21日
  • 已采纳回答 4月13日
  • 创建了问题 4月12日

悬赏问题

  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?