首页 > 解决方案 > 使用 addEventListener 后未定义

问题描述

我对 Javascript 很陌生,正在尝试将我用 python 制作的游戏翻译成 javascript。我目前正在尝试为游戏获取键盘输入。每当我运行它时,它都会给我以下错误: Uncaught TypeError: Cannot read property '0' of undefined(at line 4 in this example)

Board 是一个用于存储板的二维数组,我在 addEventListener 语句之前测试过 Board 不是未定义的。

为什么会发生这个错误,我应该怎么做才能解决它。如前所述,我是 javascript 的完整初学者,因此将不胜感激简单的解释。亲切的问候

document.addEventListener('keydown', function(event){
   if(event.keyCode == 65){
      console.log(Board)
      Board[this.block1[0]][this.block1[1]]=null;
      Board[this.block2[0]][this.block2[1]]=null;
      Board[this.block3[0]][this.block3[1]]=null;
      Board[this.block4[0]][this.block4[1]]=null;

标签: javascript

解决方案


this在您的代码中不是您期望的那样。如果block1etc 是局部变量,请不带this.. 如果它们是封装对象的成员,请将回调函数更改为使用箭头语法来this引用您的对象:document.addEventListener('keydown', event => { /*...*/ })


推荐阅读