JavaScript 2d 数组导致“无法读取未定义的属性'未定义'”
JavaScript 2d array causing "Cannot read property 'undefined' of undefined"
我正在尝试从 JavaScript 中的全局 2D 数组中读取,它给了我"无法读取未定义的属性'未定义'"。
以下是我定义数组的方式:
var cell = {visited:false, left:true, top:true, right:true, bottom:true}
var cells = new Array(10);
for (i = 0; i < 10; i++) //Initiate 2d cells array.
{
cells[i] = new Array(cell,cell,cell,cell,cell,cell,cell,cell,cell,cell);
}
然后我稍后会像这样访问它:
if(x != 0) //Left
{
if(cells[x-1][y].visited == false)
{
//Do something
}
}
x 和 y 永远不会超出定义的数组的范围,所以我不确定为什么会发生这种情况。
谢谢!
要创建全局变量,您需要在全局范围内创建它,或者在声明它时省略var
关键字。如我所见,您使用var
关键字,因此只有在全局范围内创建变量时,您的变量才能是全局的。
只需使用cells = new Array(10);
而不是var cells = new Array(10);
。
顺便说一句。如果可能的话,最好避免使用全局变量。
建议
此外,我建议您以这种方式创建二维数组。通过引用传递cell
变量。因此,在一个地方更改它将在任何地方更改它。
cells = new Array(10).fill().map(function(cell) {
return new Array(10).fill().map(function() {
return {visited:false, left:true, top:true, right:true, bottom:true};
})
});
相关文章:
- 将对象作为参数传递后的未定义属性
- 检查链接对象形式中未定义属性的最佳实践是什么
- PhantomJS中的evalute内部未定义属性
- 访问数字类型的未定义属性
- 如何处理未定义属性的未定义属性 javascript 类型错误
- 返回未定义属性的脚本
- 类型错误:无法读取 ng-repeat 的未定义属性
- JavaScript-Disqus如何处理其“;disqus_config”;包含未定义属性的函数
- 是对HTMLElement#样式的未定义属性的赋值的返回值,保证与赋值相同
- 最好检查未定义属性或设置为空
- 如何解决这个未定义属性的node.js错误?
- 如何在JavaScript中挽救对象的未定义属性?
- AngularJS和PHP -注意:未定义属性:stdClass
- 主干模型删除未定义属性
- if else子句中未定义对象的未定义属性
- Javascript数组问题:无法读取未定义属性
- 当尝试使用未定义属性进行筛选时,Lodash将排除项
- 在Javascript数组的中途未定义属性
- Knockout arrayForEach未定义属性
- javascript中未定义属性的简写,初始化和赋值属性