gpt4 book ai didi

Javascript Lookup table vs else if 和多个匹配结果

转载 作者:行者123 更新时间:2023-11-30 16:27:04 25 4
gpt4 key购买 nike

我正在创建一个有趣的 Canvas 游戏,并且我正在尝试重构我的一些多重 else if 语句以改为使用对象查找表。

这是我当前在按下键时分配变量值的代码:

function keyDown(e) {
keypressed = true;

if (e.keyCode == 39 || e.keyCode == 68) {rightKey = true; }
else if (e.keyCode == 37 || e.keyCode == 65) {leftKey = true;}
else if (e.keyCode == 38 || e.keyCode == 87) {upKey = true; }
else if (e.keyCode == 40 || e.keyCode == 83) {downKey = true; }
else if (e.keyCode == 80) { isPaused = !isPaused; document.body.classList.toggle('pause'); }

if (e.keyCode === 69) { startHit(); }
}

我想分配 wsad 键和箭头键来做同样的事情,因此使用 ||在 if 条件下。

我读到使用对象字面量查找表是实现此目标的更快方法,这是我的尝试:

var codes = {
39 : function() {
return rightKey = true;
},
37 : function() {
return leftKey = true;
},
38 : function() {
return upKey = true;
},
40 : function() {
return downKey = true;
},
80 : function() {
isPaued = !isPaused;
document.body.classList.toggle('pause');
},
69 : startHit
}

codes[68] = codes[39];
codes[65] = codes[37];
codes[87] = codes[38];
codes[83] = codes[40];

function keyDown(e) {
keypressed = true;
codes[e.keyCode]();
}

这工作得很好,但我不确定底部键的分配是最好的方法吗?我显然不能使用 ||左侧赋值中的运算符,那么是否有更简洁的方法来执行此操作,还是我应该坚持使用 else ifs?

此外,我知道我可以使用 switch 语句,但我觉得它看起来与我在上面所做的方式类似。

任何建议都会很棒。谢谢。

最佳答案

为什么不使用 switch声明?

function keyDown(e) {
keypressed = true;
switch (e.keyCode) {
case 39:
case 68:
rightKey = true;
break;
case 37:
case 65:
leftKey = true;
break;
case 38:
case 87:
upKey = true;
break;
case 40:
case 83:
downKey = true;
break;
case 80:
isPaused = !isPaused;
document.body.classList.toggle('pause');
break;
case 69:
startHit();
}
}

关于Javascript Lookup table vs else if 和多个匹配结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33947534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com