为什么我这个2d阵列出错了?

Win*_*sun 1 javascript multidimensional-array

var arr = [[],[]];
var si = 5;
var c  = 0;
if (arr[si][c] == null)
{
     arr[si][c] = {
           code : "Test",
     };
}
alert(arr[si][c].code);
Run Code Online (Sandbox Code Playgroud)

您好,我正在尝试运行此示例代码,但我收到一个错误,说无法调用未定义的属性"0".

尴尬的是,如果我使用数值而不是变量"si"和"c"作为索引,则错误不会显示出来!

是否有可能在JS中你不能将变量用作索引?我认为它确实适用于非二维数组.

感谢你并致以真诚的问候

Que*_*tin 6

JavaScript没有任何二维数组的概念.只是包含其他数组的数组.

arr[si][c]arr[5][0].

arr是一个包含两个成员(01)的数组,每个成员都是一个数组.

当你访问时,arr[5]你得到的undefined是因为你已经超越了结束.

undefined[0] 是一个错误.

尴尬的是,如果我使用数值而不是变量"si"和"c"作为索引,则错误不会显示出来!

如果使用文字而不是变量,则会出现相同的错误.据推测,您的工作测试涉及不同的数字.

var arr = [[],[]];
if (arr[5][0] == null)
{
     arr[5][0] = {
           code : "Test",
     };
}
alert(arr[5][0].code);
Run Code Online (Sandbox Code Playgroud)