Joe*_*Joe 277 javascript
我无法绕过这个怪癖.
[1,2,3,4,5,6][1,2,3]; // 4
[1,2,3,4,5,6][1,2]; // 3
Run Code Online (Sandbox Code Playgroud)
我知道[1,2,3] + [1,2] = "1,2,31,2",但我找不到正在执行的类型或操作.
Lig*_*ica 387
[1,2,3,4,5,6][1,2,3];
^ ^
| |
array + — array subscript access operation,
where index is `1,2,3`,
which is an expression that evaluates to `3`.
Run Code Online (Sandbox Code Playgroud)
第二个[...]不能是一个数组,所以它是一个数组下标操作.并且下标操作的内容不是操作数的分隔列表,而是单个表达式.
在此处阅读有关逗号运算符的更多信息.
Imd*_*dad 21
[1,2,3,4,5,6][1,2,3];
Run Code Online (Sandbox Code Playgroud)
这里第二个框即[1,2,3]成为[3]最后一个项目,因此结果将为4,例如,如果您保留[1,2,3,4,5,6]在数组中
var arr=[1,2,3,4,5,6];
arr[3]; // as [1,2,3] in the place of index is equal to [3]
Run Code Online (Sandbox Code Playgroud)
同样
*var arr2=[1,2,3,4,5,6];
// arr[1,2] or arr[2] will give 3*
Run Code Online (Sandbox Code Playgroud)
但是当你在其间放置一个+运算符时,第二个方括号不是为了提及索引.这是另一个阵列这就是你得到的原因
[1,2,3] + [1,2] = 1,2,31,2
Run Code Online (Sandbox Code Playgroud)
即
var arr_1=[1,2,3];
var arr_2=[1,2];
arr_1 + arr_2; // i.e. 1,2,31,2
Run Code Online (Sandbox Code Playgroud)
基本上在第一种情况下,它被用作数组的索引,在第二种情况下,它本身就是一个数组.
| 归档时间: |
|
| 查看次数: |
19372 次 |
| 最近记录: |