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
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
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!