Javascript查找表与else-if和多个匹配结果
Javascript Lookup table vs else if and multiple matching results
我正在创建一个有趣的画布游戏,并试图重新考虑我的多个else-if语句中的一些语句,以使用对象查找表。
这是我当前在keydown上分配变量值的代码:
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]();
}
这很好,但我不确定底部键的分配是最好的方法吗?我显然不能在左手边的赋值中使用||运算符,那么有没有一种更干净的方法可以做到这一点,或者我应该只使用其他if?
此外,我知道我可以使用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();
}
}
这个怎么样?
var codes = function (){
function rightKey(){
rightKey = true;
}
function leftKey() {
leftKey = true;
}
return {
39 : rightKey,
37 : leftKey,
'...': '...',
68 : rightKey,
65 : leftKey
}}()
相关文章:
- 在IntelliJ IDEA中,如何将JS文件从“;查找用法“;使用TypeScript时的结果
- MongoDB MonkAPI根据数据库请求之外可用的查找结果设置变量
- 如何使用Lodash从数组中查找多个结果
- Mongoose查找结果和异步
- VBScript在目录中查找用户;返回结果(已找到或未找到)
- 没有结果的异步查找会挂起应用
- 在 Meteor 中,如何将查找查询的处理结果发布为游标
- 查找主干集合上的位置仅返回一个结果
- 如何查找选中的复选框并将其传递给 MVC 中的操作结果
- 使用 jQuery 在 Ajax 结果中查找节点
- 如何获取解析云代码查找结果
- 将变量设置为猫鼬查找的结果
- 必应地图,查找多个地理代码搜索结果(你的意思是:功能)
- java脚本regex.match只查找一个结果
- Javascript & lodash ..将 _.查找结果转换为布尔值
- 一段html+javascript,用于查找输入中的数字是否为素数,然后显示结果
- Javascript查找表与else-if和多个匹配结果
- 使用mongoose在mongo中查找用户,并将结果返回到JSON
- 按特定代码查找结果为null
- 使用正则表达式查找模式并获得结果