JS扫雷项目报错:uncaught (in promise) TypeError问题求助
解决扫雷项目中的TypeError: cannot set properties of undefined错误
你的错误出在make2DArray函数的实现上,这个函数根本没正确生成二维数组,导致后续给grid[i][j]赋值时,grid[i]是undefined,触发了类型错误。
原函数的问题点:
- 先创建了长度为cols的数组
var arr = new Array(cols);,但立刻用arr = [];把它改成了空数组,直接清空了之前的初始化 - 循环条件
i < arr.length此时arr是空数组,length为0,循环一次都不会执行,返回的arr还是空数组 - 就算循环能跑,你写的
arr[1] = new Array(rows);是固定给索引1的位置赋值,其他索引依然是undefined,而且完全没用到循环变量i
修正后的make2DArray函数:
function make2DArray(cols, rows) { var arr = new Array(cols); for (var i = 0; i < cols; i++) { arr[i] = new Array(rows); } return arr; }
补充说明:
你之前尝试添加的for (var j = 0; j < arr.width; j++)没用的原因是:数组没有width属性,应该用length,但更关键的是你没解决原函数里清空数组、循环条件无效这些核心问题。
替换掉原函数后,你的代码就能正常创建二维网格数组,后续初始化Cell实例和调用show()方法就不会报错了。
内容的提问来源于stack exchange,提问作者Sakana
相关产品推荐
相关产品推荐

