让我们分解一下
var UserBoard = new Array(20,20);
您正在创建一个包含两个插槽的数组,它们都包含值“20”(int)。所以你的数组是[20, 20]
接下来,您的循环:
for(var i = 0; i < 21; ++i){
for(var j = 0; j < 21; ++j){
UserBoard[i,j] = 0;
}
}
二维数组不是这样定义的。在这种情况下,只有“j”计数器会做一些事情。“i”被简单地忽略了。所以你最终得到一个数组,如下所示:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
接下来,赋值:
UserBoard[4,5]=1;
相当于:
UserBoard[5]=1;
和你的警报:
alert("test: " + UserBoard[3,5]);
相当于:
alert("test: " + UserBoard[5]);
这就是为什么您会收到“1”作为警报。
如果你想要二维数组,你应该使用以下符号:
UserBoard[4][5] = 1;
在 MDN 上阅读所有内容:https ://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array