分解しましょう
var UserBoard = new Array(20,20);
2つのスロットを持つ配列を作成しています。どちらにも値「20」(int)が含まれています。だからあなたの配列は[20, 20]
次に、あなたのループ:
for(var i = 0; i < 21; ++i){
for(var j = 0; j < 21; ++j){
UserBoard[i,j] = 0;
}
}
2次元配列はこのように定義されていません。その場合、「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」が表示されます。
2次元配列が必要な場合は、次の表記を使用する必要があります。
UserBoard[4][5] = 1;
MDNですべてを読んでください:https ://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array