Rumah >hujung hadapan web >tutorial js >Mengapa Salinan Tatasusunan JavaScript Berubah Apabila Perubahan Asal?

Mengapa Salinan Tatasusunan JavaScript Berubah Apabila Perubahan Asal?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-18 21:31:14263semak imbas

Why Do JavaScript Array Copies Change When the Original Changes?

Mengapa Menukar Tatasusunan dalam Salinan Kesan JavaScript?

Dalam JavaScript, tatasusunan ialah objek dan pembolehubah memegang rujukan kepada objek ini dan bukannya objek itu sendiri. Warisan ini boleh membawa kepada tingkah laku yang tidak dijangka apabila memberikan nilai baharu kepada tatasusunan.

Pertimbangkan contoh:

// Declare an array and its copy
var myArray = ['a', 'b', 'c'];
var copyOfMyArray = myArray;

// Modify the copy of the array
copyOfMyArray.splice(0, 1);

// Display the values
alert(myArray); // ['b', 'c']
alert(copyOfMyArray); // ['b', 'c']

Dengan memanipulasi copyOfMyArray, kami telah mengubah suai myArray secara tidak sengaja. Ini kerana pembolehubah seperti myArray dan copyOfMyArray menghala ke objek tatasusunan asas yang sama.

Arrays vs. Numbers

Sebaliknya, apabila bekerja dengan nombor seperti myNumber dan copyOfMyNumber, setiap pembolehubah memegang salinan nilai itu sendiri. Mengubah suai satu tidak menjejaskan yang lain.

var myNumber = 5;
var copyOfMyNumber = myNumber;

// Decrement the copy of the number
copyOfMyNumber--;

// Display the values
alert(myNumber); // 5
alert(copyOfMyNumber); // 4

Konsekuensi dan Penyelesaian

Memahami tingkah laku ini adalah penting untuk manipulasi objek yang betul. Jika anda benar-benar memerlukan salinan tatasusunan yang berbeza, gunakan kaedah hirisan untuk mencipta salinan cetek:

var copyOfMyArray = myArray.slice(0);

Walau bagaimanapun, perlu diperhatikan bahawa salinan cetek ini hanya menduplikasi rujukan tatasusunan kepada elemennya. Sebarang objek dalaman masih akan merujuk kepada kejadian asal yang sama.

Atas ialah kandungan terperinci Mengapa Salinan Tatasusunan JavaScript Berubah Apabila Perubahan Asal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn