You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript游戏开发:如何用变量实现多值判断条件?

如何用变量存储多个按键码实现判断?

完全可行,你之前的写法无效是因为逻辑运算符||和&&的作用不是存储多个值:

  • var left = 68 || 39 会返回第一个“真值”68,本质是逻辑判断而非存值
  • var left = 68 && 39 会返回最后一个“真值”39,同样达不到存储多个按键码的目的

下面是几种实用的实现方式:

方法1:用数组存储 + includes判断

这是最直观的写法,把需要判断的按键码放进数组,用includes()方法校验:

// 存储代表“左移”的按键码(D键和右键)
const leftKeys = [68, 39];

// 事件监听中判断
document.addEventListener('keydown', function(event) {
  if (leftKeys.includes(event.keyCode)) {
    // 这里写左移的游戏逻辑
    console.log('触发左移');
  }
});

方法2:用对象分组管理多组按键

如果游戏里有多个方向或功能按键,用对象分组会更清晰:

const actionKeys = {
  left: [68, 39],
  right: [65, 37],
  jump: [32, 87] // 空格和W键
};

document.addEventListener('keydown', function(event) {
  const keyCode = event.keyCode;
  if (actionKeys.left.includes(keyCode)) {
    console.log('左移');
  } else if (actionKeys.right.includes(keyCode)) {
    console.log('右移');
  } else if (actionKeys.jump.includes(keyCode)) {
    console.log('跳跃');
  }
});

方法3:兼容旧环境的indexOf写法

如果需要兼容不支持includes()的老浏览器,可以用indexOf()替代:

const leftKeys = [68, 39];

if (leftKeys.indexOf(event.keyCode) !== -1) {
  // 执行左移逻辑
}

额外建议:优先使用event.key替代keyCode

keyCode已经被标准废弃,现在更推荐用event.key直接判断按键字符,可读性更强:

const leftKeys = ['d', 'ArrowRight'];

document.addEventListener('keydown', function(event) {
  // 转小写实现不区分大小写判断
  if (leftKeys.includes(event.key.toLowerCase())) {
    console.log('触发左移');
  }
});

内容的提问来源于stack exchange,提问作者Arcadesmasher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:50:30