admin管理员组文章数量:1332733
I can't wrap my mind around this quirk.
[1,2,3,4,5,6][1,2,3]; // 4
[1,2,3,4,5,6][1,2]; // 3
I know [1,2,3] + [1,2] = "1,2,31,2"
, but I can't find what type or operation is being performed.
I can't wrap my mind around this quirk.
[1,2,3,4,5,6][1,2,3]; // 4
[1,2,3,4,5,6][1,2]; // 3
I know [1,2,3] + [1,2] = "1,2,31,2"
, but I can't find what type or operation is being performed.
3 Answers
Reset to default 389[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`.
The second [...]
cannot be an array, so it’s an array subscript operation. And the contents of a subscript operation are not a delimited list of operands, but a single expression.
Read more about the comma operator here.
Because (1,2) == 2
. You've stumbled across the comma operator (or simpler explanation here).
Unless commas appear in a declaration list, parameter list, object or array literal, they act like any other binary operator. x, y
evaluates x
, then evaluates y
and yields that as the result.
[1,2,3,4,5,6][1,2,3];
Here the second box i.e. [1,2,3]
becomes [3]
i.e. the last item so the result will be 4
for example if you keep [1,2,3,4,5,6]
in an array
var arr=[1,2,3,4,5,6];
arr[3]; // as [1,2,3] in the place of index is equal to [3]
similarly
*var arr2=[1,2,3,4,5,6];
// arr[1,2] or arr[2] will give 3*
But when you place a + operator in between then the second square bracket is not for mentioning index. It is rather another array That's why you get
[1,2,3] + [1,2] = 1,2,31,2
i.e.
var arr_1=[1,2,3];
var arr_2=[1,2];
arr_1 + arr_2; // i.e. 1,2,31,2
Basically in the first case it is used as index of array and in the second case it is itself an array.
本文标签: Why does 5687128 in JavaScriptStack Overflow
版权声明:本文标题:Why does [5,6,8,7][1,2] = 8 in JavaScript? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736760612a1951523.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论