【发布时间】:2022-01-25 14:10:59
【问题描述】:
我试图从 Eloquent Javascript 中理解这段无法解释的代码:
function trackKeys(keys) {
let down = Object.create(null);
function track(event) {
if (keys.includes(event.key)) {
down[event.key] = event.type == "keydown";
event.preventDefault();
}
}
window.addEventListener("keydown", track);
window.addEventListener("keyup", track);
return down;
}
var arrowKeys =
trackKeys(["ArrowLeft", "ArrowRight", "ArrowUp"]);
我想我理解内部函数track 将如何保持对down 和keys 的引用,因为它是一个闭包,但我迷失在return down;
该返回值是否会引用回调正在访问的完全相同的down?我不明白;我以为局部变量只能被内部函数访问?
跟进:如果 down 是原始数据类型而不是对象,这仍然有效吗?
【问题讨论】:
标签: javascript scope closures