[javascript] JavaScript에서 [5,6,8,7] [1,2] = 8 인 이유는 무엇입니까?

이 기발한 일로 내 마음을 감쌀 수는 없습니다.

[1,2,3,4,5,6][1,2,3]; // 4
[1,2,3,4,5,6][1,2]; // 3

알고 [1,2,3] + [1,2] = "1,2,31,2"있지만 수행중인 유형 또는 작업을 찾을 수 없습니다.



답변

[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`.

두 번째 [...]는 배열이 될 수 없으므로 배열 첨자 연산입니다. 그리고 아래 첨자 연산의 내용은 구분 된 피연산자 목록이 아니라 단일 표현식입니다.

쉼표 연산자에 대한 자세한 내용은 여기를 참조하십시오 .


답변

왜냐하면 (1,2) == 2. 쉼표 연산자를 우연히 발견했습니다 (또는 간단한 설명 ).

선언 목록, 매개 변수 목록, 객체 또는 배열 리터럴에 쉼표가 표시되지 않으면 다른 이진 연산자처럼 작동합니다. x, y평가 x한 다음 y결과 를 평가 하고 산출합니다.


답변

[1,2,3,4,5,6][1,2,3];

여기에 두 번째 상자 즉 [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]

비슷하게

*var arr2=[1,2,3,4,5,6];

 // arr[1,2] or arr[2] will give 3*

그러나 사이에 + 연산자를 넣으면 두 번째 대괄호는 색인을 언급하지 않습니다. 오히려 다른 배열입니다.

[1,2,3] + [1,2] = 1,2,31,2

var arr_1=[1,2,3];

var arr_2=[1,2];

arr_1 + arr_2; // i.e.  1,2,31,2

기본적으로 첫 번째 경우 배열의 인덱스로 사용되며 두 번째 경우 자체 배열입니다.


답변