7

我忘了在javascript中用逗号初始化2D数组,让我惊讶的是,它编译好了。例如。:

amIMissingSomething=[[1, 2, 3][4, 5, 6],[7, 8, 9]]console.log(amIMissingSomething)//[未定义,[7,8,9]]

我预料会发生语法错误。然而,经过一段时间后,我了解到这是有效的javascript,计算结果如下:[未定义,[7,8,9]].这是怎么回事?

1
  • 5
    因为代码被视为[1,2,3][6]如果你看到它写为变量a=[1,2,3];var b=a[6];这有意义吗?逗号运算符 评论 2023年9月15日17:00

2个答案2

重置为默认值
7

它被解析为:

amIMissingSomething=[[1,2,3][4,5,6],[7,8,9]]

逗号运算符基本上返回最后一个表达式:

amIMissingSomething=[[1,2,3][6],[7,8,9]]

由于第一个数组没有7个元素,因此其计算结果为未定义

5

它被解释为数组[索引]

请参见属性访问器

常数a=[1,2,3][0]控制台.log(a)

支出结果4, 5, 6为6,请参见逗号运算符

常量数组更改处理程序={get:函数(目标,属性){console.log(为'+target设置'+property+');返回目标[属性];},};const originalArray=[1,2,3];const proxyToArray=新代理(originalArray,arrayChangeHandler);proxyToArray[4、5、6]

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.