JavaScript新手很困惑: if(event. shiftKey == 57)?

标签 javascript event-handling

我希望我是在正确的地方回答这类问题😄 我刚刚开始使用 Coursera 上的元类(class)学习编程,在学习 JavaScript 部分之后,我认为在 GitHub 上查看其他人的代码以获得对整个项目的一些感觉和理解是个好主意。

所以现在我坐在这里,花了 2 个小时进行研究,感觉自己很愚蠢...... 我不明白这段代码:

document.addEventListener("keydown", function (event) {
  if (event.shiftKey == 57) {
    event.key = "(";

据我所知,shiftKey 总是返回一个 bool 值 - 那么这个值是如何工作的呢? (是的,确实如此)。 谁能给我解释一下吗?😄

现在尝试用 google 搜索它超过 2 小时。

最佳答案

简短回答:它不起作用,这是一个错误

正如您所指出的,由于 shiftKey 始终返回一个 bool 值,因此表达式 (event.shiftKey == 57) 将始终为 false,查看 GitHub 上它周围的代码:

if (event.shiftKey == 57) {
    event.key = "(";
} else if (event.shiftKey == 48) {
    event.key = ")";
} else if (event.shiftKey == 53) {
    event.key = "%";
}

我们可以看到,开发人员本质上是试图自己实现 Shift 键功能。 (注意,57是9字符的ascii值,48是0字符的ascii值,并且shift+0 == ) 在美国键盘布局上)您不必手动实现 Shift 键行为,浏览器已经为您处理好了。事实上,由于不同的键盘布局将不同的 Shift 键修饰符放在不同的位置,我强烈建议您不要这样做。

这本质上只是一个错误,一个非常无害的错误,因为代码永远不会被触发,并且这里不会丢失任何内容。您可以很容易地想象开发人员如何错误地编写此代码,然后测试 Shift 键行为并假设由于 Shift 键有效,因此他的代码也必须有效。

我认为这对于新开发人员来说确实是一个很好的收获!如果您愿意,可以提出问题或拉取请求;)。

关于JavaScript新手很困惑: if(event. shiftKey == 57)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76548013/

相关文章:

python - wx中表格自动调整大小

javascript - 监听/观察 - 使用 store.js 更改 LocalStorage

java - 事件处理方法无法正常工作

c# - 如何在我的 C# 应用程序中创建我自己的事件,就像可用的默认事件一样?

javascript - 在没有子节点的 html 元素上,事件捕获阶段未按预期工作

c# - 什么时候 Application_Deactivated **不**运行?

javascript - 如何使用 Javascript 以通用方式从多个 html 元素中获取值

javascript - 在异步函数上调用 `bind()` 部分有效

PDF 中的 Javascript?

javascript - 将 HTML5 Canvas 输出为图像,如何?