การส่งผ่านอ็อบเจ็กต์โดยการอ้างอิงใน JavaScript

อาเรย์และอ็อบเจ็กต์มีความแตกต่างจาก ประเภทข้อมูลพื้นฐานอื่นๆ อยู่บ้าง ความแตกต่างอยู่ที่ตัวแปร ที่เก็บอาเรย์นั้น อันที่จริงแล้ว ไม่ได้เก็บอาเรย์ไว้ แต่เพียงแค่ อ้างอิง ไปยังมัน

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

javascriptlet obj1 = {a: 1, b: 2, c: 3};

กำหนดค่าของมันจากตัวแปรหนึ่ง ไปยังอีกตัวแปรหนึ่ง:

javascriptlet obj2 = obj1;

ลองเปลี่ยนค่าตัวแปรหนึ่ง:

javascriptobj2.a = '!';

ผลลัพธ์ของการเปลี่ยนแปลงจะ ปรากฏในตัวแปรอื่นด้วย:

javascriptconsole.log(obj1); // {a: '!', b: 2, c: 3}
Задание 1

โดยไม่ต้องรันโค้ด จงกำหนดว่าอะไรจะแสดงออกมา ในคอนโซล:

javascriptlet arr1 = [1, 2, 3];
let arr2 = arr1;

arr1[0] = 'a';
console.log(arr2);
Задание 2

โดยไม่ต้องรันโค้ด จงกำหนดว่าอะไรจะแสดงออกมา ในคอนโซล:

javascriptlet arr1 = [1, 2, 3];
let arr2 = arr1;

arr1[0] = 'a';
arr2[1] = 'b';

console.log(arr1);
Задание 3

โดยไม่ต้องรันโค้ด จงกำหนดว่าอะไรจะแสดงออกมา ในคอนโซล:

javascriptlet arr1 = [1, 2, 3];
let arr2 = arr1;

arr1[0] = 'a';
arr2[0] = 'b';

console.log(arr2);