ทำไม [5,6,8,7] [1,2] = 8 ใน JavaScript


278

ฉันไม่สามารถปิดล้อมรอบมุมแหลมนี้

[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"แต่ไม่พบประเภทหรือการดำเนินการที่กำลังดำเนินการอยู่

คำตอบ:


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

ที่สอง[...]ไม่สามารถเป็นอาร์เรย์ได้ดังนั้นจึงเป็นการดำเนินการห้อยของอาร์เรย์ และเนื้อหาของการดำเนินการตัวห้อยไม่ได้เป็นรายการตัวถูกดำเนินการของตัวคั่น แต่เป็นนิพจน์เดียว

อ่านเพิ่มเติมเกี่ยวกับผู้ประกอบการจุลภาคที่นี่


7
ถูกต้อง .. ดัชนีล่าสุดใช้แล้ว .. ตัวอย่างเพิ่มเติม: [1,2,3,4,5,6] [1,2,3] === [1,2,3,4,5,6] [3] ; [1,1,1,5,1,1] [3] === [1,1,1,5,1,1] [1,2,3]; ด้วยวิธีนี้ [1,1,1,5,1,1] [3] == 5
mastak

อ่านเพิ่มเติมเกี่ยวกับตัวดำเนินการคอมมาที่นี่ เป็นข้อความที่ทำให้เข้าใจผิดเนื่องจากวิกิที่เชื่อมโยงพูดถึงตัวดำเนินการคอมม่าในบริบท C และ C ++ และที่นี่คุณมี JavaScript !!
Nawaz

108

(1,2) == 2เพราะ คุณพบโอเปอเรเตอร์จุลภาค (หรือคำอธิบายที่ง่ายกว่าที่นี่ )

ยกเว้นว่าเครื่องหมายจุลภาคปรากฏในรายการประกาศรายการพารามิเตอร์วัตถุหรือตัวอักษรอาร์เรย์พวกเขาทำหน้าที่เหมือนตัวดำเนินการไบนารีอื่น ๆ x, yประเมินxจากนั้นประเมินyและให้ผลลัพธ์ที่เป็นผลลัพธ์


21
[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

โดยทั่วไปในกรณีแรกมันถูกใช้เป็นดัชนีของอาร์เรย์และในกรณีที่สองมันเป็นตัวเองอาร์เรย์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.