Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

พฤติกรรมที่น่าอึดอัดใจของตัวดำเนินการลบในอาร์เรย์ใน JavaScript


ตัวดำเนินการลบใน JavaScript แท้จริงแล้วเป็นโอเปอเรเตอร์ของวัตถุ (ใช้กับวัตถุ)

แต่เนื่องจากอาร์เรย์ยังเป็นวัตถุที่ทำดัชนีใน JavaScript เราจึงสามารถใช้ตัวดำเนินการลบกับอาร์เรย์ได้เช่นกัน

พิจารณาอาร์เรย์ของตัวอักษรต่อไปนี้ -

const arr = ['a', 'b', 'c', 'd', 'e'];

ตัวอย่าง

ให้เรารันโปรแกรมต่อไปนี้และเดาผลลัพธ์ที่คาดหวัง -

const arr = ['a', 'b', 'c', 'd', 'e'];
delete arr[4];
console.log(arr);
console.log(arr.length);

ผลลัพธ์

ผลลัพธ์ของโปรแกรมนี้ในคอนโซลจะเป็น −

[ 'a', 'b', 'c', 'd', <1 empty item> ]
5

ทำความเข้าใจกับผลลัพธ์ -

เนื่องจากเราลบค่าดัชนีหนึ่งค่าของอาร์เรย์ เราจึงคาดว่า array.length จะส่งออกเป็น 4 แทนที่จะเป็น 5 แต่ตัวดำเนินการ delete จะลบค่าออกจากตำแหน่งหน่วยความจำเท่านั้น และตำแหน่งนั้นยังคงถูกครอบครองโดยอาร์เรย์

สิ่งนี้ทำให้ความยาวของอาร์เรย์ไม่เปลี่ยนแปลง และเรายังคงเห็นองค์ประกอบ 5 รายการในอาร์เรย์ มีเพียงตำแหน่งหน่วยความจำเดียวที่ว่างเปล่าในขณะนี้