var test = [[
[1,2],[2,3],[3,4]
]];
alert(test[[0]].length);
这返回了 3,但我无法理解这实际上意味着什么。怎么会是这个结果呢?
最佳答案
JavaScript 中没有多维数组。只有嵌套数组。
[ // test
[ // test[0]
[1,2], // test[0][0]
[2,3], // test[0][1]
[3,4] // test[0][2]
] //
] //
如您所见,test[0]
的长度为 3。
并且test[[0]]
在语义上是不正确的(*)并折叠成test[0]
。
(*) 索引运算符 ([]
) 需要一个数字,如 test[0]
中所示。如果您不向其传递数字(例如在 test[[0]]
情况下,您传递数组 [0]
),则会转换为字符串将首先发生。 (这是因为下面的第一个注释。)
数组通过用逗号连接其成员来转换为字符串。 [0].toString()
为 "0"
,因此 test[[0]]
相当于 test["0"]
,相当于test[0]
。
注释:
- 方括号也用于属性访问,因此
test["length"]
与test.length
相同。 - 因此,像
test[[0]][["length"]])
这样可怕的东西相当于test[0].length
并且会给你3
。 - 类似
test[[0,0]]
的内容将是test["0,0"]
- 并且因为没有名为"0 的属性,0"
在该数组上,您将得到undefined
。
关于javascript - 理解javascript中多维数组的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24053883/