在这段代码中,复制自eloquent javascript的第15章,keyup事件侦听器做什么?
在以下复制自的代码中,在这段代码中,复制自eloquent javascript的第15章,keyup事件侦听器做什么?,javascript,events,javascript-events,event-handling,Javascript,Events,Javascript Events,Event Handling,在以下复制自的代码中,按[code[event.keyCode]]如何作为布尔值结束?我就是不明白为什么需要'keyup'事件侦听器 这样做的目的是确保按住'keydown'键时只注册一次。我认为当您按下按键时,可能会触发keyup事件,正如keydown事件中的引用所示,但该资源指出功能已中断 var arrowCodes = {37: "left", 38: "up", 39: "right"}; function trackKeys(codes) { var pressed = Ob
按[code[event.keyCode]]
如何作为布尔值结束?我就是不明白为什么需要'keyup'
事件侦听器
这样做的目的是确保按住'keydown'
键时只注册一次。我认为当您按下按键时,可能会触发keyup事件,正如keydown
事件中的引用所示,但该资源指出功能已中断
var arrowCodes = {37: "left", 38: "up", 39: "right"};
function trackKeys(codes) {
var pressed = Object.create(null);
function handler(event) {
if (codes.hasOwnProperty(event.keyCode)) {
var down = event.type == "keydown";
pressed[codes[event.keyCode]] = down;
event.preventDefault();
}
}
addEventListener("keydown", handler);
addEventListener("keyup", handler);
return pressed;
}
下面是解释这段代码的文本。我一点也不明白,true
和false
从何而来
注意两种事件类型如何使用相同的处理程序函数。信息技术
查看事件对象的type属性,以确定是否应将键状态更新为true(“keydown”)或false(“keyup”)
真值来自以下代码行:
var down = event.type == "keydown";
如果event.type
等于“keydown”
,则将down
设置为true,否则设置为false,并可读取为:
var down = (event.type == "keydown");
或者(更详细):
然后的第二行继续将该真值存储到按下的数组中:
pressed[codes[event.keyCode]] = down;
完全一样
var down;
if ( event.type == "keydown" ) { down = true; }
else { down = false; }
如果你的问题是关于其他事情,那么请注明 布尔值来自
var down=event.type==“keydown”
RHS的优先级始终更高,因此将计算右第一个表达式event.type==“keydown”,其中的运算符为“等于”因此,该函数的输出将基于比较表达式的结果,该表达式将仅为布尔值。是否每次运行该函数时都会创建所有这些对象的新实例?您的代码将创建一个新实例。当调用trackKeys()
(外部函数)时,将创建按下的对象,,handler()
(内部函数)可以使用该对象。另见。
var down = event.type == "keydown";
var down;
if ( event.type == "keydown" ) { down = true; }
else { down = false; }