Javascript 为什么不显示警报?

Javascript 为什么不显示警报?,javascript,Javascript,下面是关于HTML5游戏开发的教程。我不明白为什么当我按下键盘上的键时,这段代码不会显示警报 var canvas = document.getElementById("mainCanvas"); var context = canvas.getContext("2d"); var keys = []; window.addEventListener("keydown", function(e) { keys[e.keyCode] = true; }, false); window.a

下面是关于HTML5游戏开发的教程。我不明白为什么当我按下键盘上的
键时,这段代码不会显示警报

var canvas = document.getElementById("mainCanvas");
var context = canvas.getContext("2d");

var keys = [];

window.addEventListener("keydown", function(e) {
  keys[e.keyCode] = true;
}, false);

window.addEventListener("keyup", function(e) {
  delete keys[e.keyCode]
}, false);

if (keys[38]) alert("yep");
Chrome控制台清楚地显示
键[38]
并键入
if(键[38])警报(“yep”)显示警报。我想我在这里错过了一件基本的事情(或者根本上是愚蠢的)。如果JS代码中没有明显的错误,我很乐意提供更多信息


谢谢

if
将在勾号结束时调用
if。一旦你离开,听众就会开始开火。因此,在执行
if
时,不可能设置
数组


之后将调用的唯一代码片段是传递给
keydown
keydup
事件的两个回调。如果您想对这些事件做出反应,您的代码应该位于这些回调中。

将在勾选结束时调用
If
。一旦你离开,听众就会开始开火。因此,在执行
if
时,不可能设置
数组

之后将调用的唯一代码片段是传递给
keydown
keydup
事件的两个回调。如果您想对这些事件做出反应,您的代码应该驻留在这些回调中。

您需要将代码(警报)放入事件侦听器中,如下所示:

window.addEventListener(“向下键”,函数(e){
如果(e.keyCode==38){
警报(“布亚卡”);
}
},假)您需要将代码(警报
放入事件侦听器中,如下所示:

window.addEventListener(“向下键”,函数(e){
如果(e.keyCode==38){
警报(“布亚卡”);
}

},假)你认为什么/什么时候
if(键[38])警报(“yep”)正在做什么?如果在您键入任何键之前运行。更重要的是,您认为它是在何时运行的。当javascript引擎解析该行时,
keys[38]
仍然没有定义。2011年的MacBook Pro与此无关。您正在添加事件侦听器。只有当事件侦听器触发时(意味着按下一个键),
函数(e){…}
代码才会运行。而你的
if(键…
代码在事件侦听器触发函数之外。@BartekBanachewicz我用其他词说的和你回答的一样。你认为
if(键[38])警报是什么/什么时候
正在做什么?如果在你键入任何键之前运行。更重要的是,你认为它什么时候在做。当javascript引擎解析该行时,
键[38]
仍然没有定义。而2011 MacBook Pro与此无关。你正在添加事件监听器。只有当事件监听器触发时(意味着按下一个键)
函数(e){…}
代码是否会运行。而您的
if(key…
代码不在事件侦听器触发函数的范围内。@BartekBanachewicz我用其他词说的与您的回答相同。