Memahami Pass by Rujukan JavaScript vs. Pass by Value
Dalam JavaScript, parameter yang dihantar kepada fungsi sentiasa diluluskan oleh nilai. Ini bermakna salinan nilai asal dibuat dan nilai asal tidak terjejas oleh sebarang perubahan yang dibuat pada salinan. Walau bagaimanapun, apabila nilai ialah objek (termasuk tatasusunan), salinan yang dibuat adalah rujukan kepada objek asal.
Konsep ini mempengaruhi kelakuan pembolehubah apabila ia diubah suai dalam fungsi:
Contohnya:
function f(a, b, c) { a = 3; // Re-assigns a to a new primitive value b.push("foo"); // Adds a new property to b, modifying the referenced object c.first = false; // Modifies a property of the referenced object }
Dalam contoh ini, x, y, dan z di luar fungsi akan mempunyai nilai berikut: x kekal tidak berubah pada 4 (nilai primitif), y kini mempunyai sifat tambahan ["foo"] (sifat objek ditambah), dan z.first ditetapkan kepada palsu (sifat objek diubah suai).
Untuk mencipta salinan bebas sepenuhnya objek, anda perlu menyalin secara eksplisit semua sifatnya ke objek baharu. Ini boleh dilakukan menggunakan kaedah Object.assign() atau dengan melintasi objek dan mencipta objek baharu dengan sifat baharu berdasarkan yang lama.
Atas ialah kandungan terperinci Bagaimanakah Mekanisme Pas-demi-Nilai JavaScript Mempengaruhi Pembolehubah Primitif dan Objek dalam Fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!