Câu trả lời:
[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`.
Thứ hai [...]không thể là một mảng, vì vậy nó là một hoạt động đăng ký mảng. Và nội dung của một hoạt động đăng ký không phải là một danh sách các toán hạng được phân tách, mà là một biểu thức duy nhất.
Tìm hiểu thêm về toán tử dấu phẩy ở đây .
Bởi vì (1,2) == 2. Bạn đã vấp phải toán tử dấu phẩy (hoặc giải thích đơn giản hơn ở đây ).
Trừ khi dấu phẩy xuất hiện trong danh sách khai báo, danh sách tham số, đối tượng hoặc mảng bằng chữ, chúng hoạt động như bất kỳ toán tử nhị phân nào khác. x, yđánh giá x, sau đó đánh giá yvà mang lại kết quả.
[1,2,3,4,5,6][1,2,3];
Ở đây, hộp thứ hai tức là [1,2,3]trở thành [3]mục cuối cùng, vì vậy kết quả sẽ là 4, ví dụ nếu bạn giữ [1,2,3,4,5,6]trong một mảng
var arr=[1,2,3,4,5,6];
arr[3]; // as [1,2,3] in the place of index is equal to [3]
tương tự
*var arr2=[1,2,3,4,5,6];
// arr[1,2] or arr[2] will give 3*
Nhưng khi bạn đặt một toán tử + ở giữa thì dấu ngoặc vuông thứ hai không được đề cập đến chỉ mục. Nó là một mảng khác Đó là lý do tại sao bạn nhận được
[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
Về cơ bản trong trường hợp đầu tiên, nó được sử dụng như là chỉ mục của mảng và trong trường hợp thứ hai, bản thân nó là một mảng.