Rumah >hujung hadapan web >tutorial js >Apakah Perbezaan Antara Pass by Value dan Pass by Rujukan dalam JavaScript?

Apakah Perbezaan Antara Pass by Value dan Pass by Rujukan dalam JavaScript?

Susan Sarandon
Susan Sarandonasal
2024-12-22 13:49:10836semak imbas

What's the Difference Between Pass by Value and Pass by Reference in JavaScript?

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!

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