Bagaimanakah nilai primitif dan nilai rujukan berbeza dalam JavaScript apabila dihantar ke fungsi?

Susan Sarandon
Lepaskan: 2024-11-16 10:21:02
asal
408 orang telah melayarinya

How do primitive values and reference values differ in JavaScript when passed to a function?

Nilai primitif dan nilai rujukan dalam JavaScript

Dalam JavaScript, pembolehubah boleh diberikan sama ada nilai primitif atau nilai rujukan. Nilai primitif, seperti boolean, nombor dan rentetan, disimpan terus dalam lokasi memori pembolehubah.

Apabila anda mencipta nilai rujukan, seperti tatasusunan atau objek, anda sebenarnya tidak menyimpan objek atau tatasusunan sendiri dalam pembolehubah. Sebaliknya, anda menyimpan rujukan kepada lokasi dalam memori tempat objek atau tatasusunan disimpan. Ini bermakna jika anda menukar objek atau tatasusunan, perubahan akan ditunjukkan dalam pembolehubah, walaupun pembolehubah itu sendiri tidak berubah.

Contoh

Yang berikut Kod JavaScript mencipta nilai primitif dan nilai rujukan:

var name = "John"; // Primitive value stored in the variable
var shoppingCart = []; // Reference value stored in the variable
Salin selepas log masuk

Dalam contoh ini, nama pembolehubah mengandungi nilai primitif "John". ShoppingCart boleh ubah mengandungi rujukan kepada objek tatasusunan yang disimpan dalam ingatan.

Melalui nilai mengikut nilai berbanding dengan rujukan

Apabila anda menghantar nilai primitif kepada fungsi, salinan nilai diluluskan. Ini bermakna bahawa sebarang perubahan yang dibuat pada nilai dalam fungsi tidak akan menjejaskan nilai yang disimpan dalam pembolehubah.

Apabila anda menghantar nilai rujukan kepada fungsi, rujukan itu sendiri dihantar, bukan salinan. Ini bermakna bahawa sebarang perubahan yang dibuat pada objek atau tatasusunan dalam fungsi juga akan mempengaruhi objek atau tatasusunan yang disimpan dalam pembolehubah.

Contoh

Kod JavaScript berikut menunjukkan menghantar nilai mengikut nilai dan rujukan:

// Pass by value
var name = "John";

function changeName(name) {
  name = "Jane";  // Changes the local copy of the value
}

changeName(name);

console.log(name); // Outputs "John" because the original value is not changed

// Pass by reference
var shoppingCart = [];

function addProduct(shoppingCart) {
  shoppingCart.push("Apple");  // Changes the object stored in the reference
}

addProduct(shoppingCart);

console.log(shoppingCart); // Outputs ["Apple"] because the original object is updated
Salin selepas log masuk

Dalam contoh pertama, fungsi changeName diluluskan nilai primitif "John". Apabila fungsi menukar nilai kepada "Jane", nilai asal yang disimpan dalam nama pembolehubah tidak terjejas.

Dalam contoh kedua, fungsi addProduct diluluskan nilai rujukan shoppingCart. Apabila fungsi menambah produk "Apple" pada tatasusunan, objek asal yang disimpan dalam shoppingCart berubah-ubah juga dikemas kini.

Atas ialah kandungan terperinci Bagaimanakah nilai primitif dan nilai rujukan berbeza dalam JavaScript apabila dihantar ke fungsi?. 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