이 기발한 일로 내 마음을 감쌀 수는 없습니다.
[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
기본적으로 첫 번째 경우 배열의 인덱스로 사용되며 두 번째 경우 자체 배열입니다.