การส่งผ่านอ็อบเจ็กต์โดยการอ้างอิงใน JavaScript
อาเรย์และอ็อบเจ็กต์มีความแตกต่างจาก ประเภทข้อมูลพื้นฐานอื่นๆ อยู่บ้าง ความแตกต่างอยู่ที่ตัวแปร ที่เก็บอาเรย์นั้น อันที่จริงแล้ว ไม่ได้เก็บอาเรย์ไว้ แต่เพียงแค่ อ้างอิง ไปยังมัน
ในทางปฏิบัติ นี่หมายความว่า เมื่อเขียนอ็อบเจ็กต์ลงในตัวแปรอื่น ตัวแปรทั้งสองจะอ้างอิง ไปยังอ็อบเจ็กต์เดียวกัน มาลองทดสอบในทางปฏิบัติกัน สมมติว่าเรามีอ็อบเจ็กต์ต่อไปนี้:
let obj1 = {a: 1, b: 2, c: 3};
กำหนดค่าของมันจากตัวแปรหนึ่ง ไปยังอีกตัวแปรหนึ่ง:
let obj2 = obj1;
ลองเปลี่ยนค่าตัวแปรหนึ่ง:
obj2.a = '!';
ผลลัพธ์ของการเปลี่ยนแปลงจะ ปรากฏในตัวแปรอื่นด้วย:
console.log(obj1); // {a: '!', b: 2, c: 3}
โดยไม่ต้องรันโค้ด จงกำหนดว่าอะไรจะแสดงออกมา ในคอนโซล:
let arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 'a';
console.log(arr2);
โดยไม่ต้องรันโค้ด จงกำหนดว่าอะไรจะแสดงออกมา ในคอนโซล:
let arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 'a';
arr2[1] = 'b';
console.log(arr1);
โดยไม่ต้องรันโค้ด จงกำหนดว่าอะไรจะแสดงออกมา ในคอนโซล:
let arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 'a';
arr2[0] = 'b';
console.log(arr2);