Melalui Rujukan lwn. Nilai dalam JavaScript
Apabila menghantar data kepada fungsi dalam JavaScript, adalah penting untuk memahami perbezaan antara rujukan lulus dan lulus mengikut nilai. Perbezaan ini mempengaruhi cara data dikongsi dan diubah suai antara fungsi dan pemanggil.
Pass by Value
Untuk jenis data primitif (rentetan, nombor, boolean), JavaScript sentiasa melepasi nilai. Ini bermakna salinan nilai primitif dicipta dan dihantar ke fungsi. Sebarang perubahan yang dibuat pada salinan dalam fungsi tidak mempunyai kesan ke atas pembolehubah asal di luar fungsi.
Pass by Rujukan
Objek (termasuk tatasusunan) diluluskan melalui rujukan dalam JavaScript. Ini bermakna bahawa fungsi menerima rujukan kepada objek, bukan salinan. Sebarang perubahan yang dibuat pada sifat objek dalam fungsi akan menjejaskan objek asal di luar fungsi.
Contoh
Pertimbangkan fungsi berikut:
function f(a, b, c) { a = 3; b.push("foo"); c.first = false; }
Apabila dipanggil dengan hujah berikut:
var x = 4; var y = ["eeny", "miny", "mo"]; var z = {first: true}; f(x, y, z);
Nilai x kekal tidak berubah kerana ia adalah dilalui oleh nilai. Tatasusunan y asal diubah suai terus melalui operasi push(), jadi kandungannya berubah. Begitu juga, sifat pertama z diubah suai, menjejaskan objek asal.
Salinan Objek Bebas
Untuk mencipta salinan bebas sepenuhnya objek, anda perlu menggunakan kaedah yang mencipta objek baharu dengan nilai sifat yang sama tetapi tiada rujukan kepada yang asal. Satu pendekatan biasa ialah menggunakan teknik JSON.parse(JSON.stringify()):
var newObject = JSON.parse(JSON.stringify(originalObject));
Atas ialah kandungan terperinci Apakah Perbezaan Antara Pass by Value dan Pass by Rujukan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!