Rumah > hujung hadapan web > tutorial js > Lulus JavaScript mengikut Nilai atau Rujukan: Apakah Kisah Sebenar?

Lulus JavaScript mengikut Nilai atau Rujukan: Apakah Kisah Sebenar?

Mary-Kate Olsen
Lepaskan: 2024-12-28 17:27:55
asal
974 orang telah melayarinya

JavaScript Pass by Value or Reference: What's the Real Story?

JavaScript: Pass by Reference vs. Pass by Value Demystified

Dalam JavaScript, topik pass by reference versus pass by value sering dibangkitkan soalan. Memahami konsep ini adalah penting untuk pengaturcaraan yang berkesan.

Pass by Value vs. Pass by Rujukan

Bertentangan dengan kepercayaan popular, JavaScript sentiasa menghantar argumen kepada fungsi mengikut nilai. Walau bagaimanapun, nilai yang diluluskan boleh menjadi jenis data primitif (nombor, rentetan, boolean, null, undefined) atau rujukan kepada objek (Array, Object).

Primitive vs. Objects

  • Primitif: Melepasi nilai sebenar mereka. Pengubahsuaian kepada nilai yang diluluskan tidak menjejaskan pembolehubah di luar fungsi.
  • Objek (Susun atur, Objek): Dilalui melalui rujukan. Pengubahsuaian pada sifat objek mempengaruhi pembolehubah di luar fungsi. Walau bagaimanapun, menetapkan semula keseluruhan objek kepada rujukan baharu tidak akan menjejaskan pembolehubah luaran.

Contoh:

Pertimbangkan coretan kod:

function f(a, b) {
  a = 3;
  b[0] = "foo";
}

var x = 4;
var y = ["eeny", "miny", "mo"];
f(x, y);
Salin selepas log masuk
  • x kekal tidak berubah kerana ia adalah primitif yang diluluskan oleh nilai dan ditetapkan semula.
  • y diubah suai kerana ia adalah objek yang diluluskan oleh rujukan dan sifatnya telah diubah suai.

Pengklonan Objek Bebas

Untuk mencipta salinan bebas sepenuhnya objek tanpa sebarang rujukan, amalan terbaik adalah menggunakan kaedah Object.assign() atau pengendali penyebaran (...).

Contoh:

const original = { foo: "bar" };
const clone = { ...original };
Salin selepas log masuk

Dalam contoh ini, klon ialah salinan bebas daripada asal. Sebarang pengubahsuaian untuk mengklon tidak akan menjejaskan asal.

Atas ialah kandungan terperinci Lulus JavaScript mengikut Nilai atau Rujukan: Apakah Kisah Sebenar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan