Rumah >hujung hadapan web >tutorial js >Rujukan Pass-by-Value dalam JavaScript: Bagaimanakah Objek dan Primitif Berkelakuan dalam Panggilan Fungsi?

Rujukan Pass-by-Value dalam JavaScript: Bagaimanakah Objek dan Primitif Berkelakuan dalam Panggilan Fungsi?

DDD
DDDasal
2024-12-20 21:44:09148semak imbas

Pass-by-Reference vs. Pass-by-Value in JavaScript: How Do Objects and Primitives Behave in Function Calls?

JavaScript Pass-by Rujukan lwn. Pass-by Value

JavaScript menggunakan kedua-dua pass-by-value dan pass-by-reference mechanism . Primitif, seperti nombor dan rentetan, diluluskan oleh nilai, bermakna salinan primitif dicipta dalam fungsi yang dipanggil. Sebaliknya, bukan primitif, terutamanya objek, diluluskan melalui rujukan.

Dalam kes objek, rujukan kepada objek dihantar dan bukannya salinan. Ini bermakna mengubah suai pembolehubah rujukan dalam fungsi yang dipanggil tidak akan menjejaskan rujukan dalam pemanggil, seperti yang ditunjukkan dalam contoh yang disediakan:

var a = { key: 'value' };
replace(a); // a still holds its original value
update(a); // a's contents change

Kekeliruan dengan Fungsi segi empat tepat

Contoh dalam soalan termasuk segi empat tepat fungsi bersarang dengan parameter saya. Parameter ini pada mulanya tidak ditentukan, tetapi ditakrifkan dalam fungsi. Sebab untuk persediaan ini adalah untuk menyediakan cara untuk berkongsi data antara fungsi segi empat tepat dan fungsi kawasan dalamannya.

Walaupun parameter saya pada mulanya tidak ditakrifkan dalam fungsi segi empat tepat, ia adalah rujukan objek yang diluluskan oleh rujukan . Oleh itu, apabila ia ditetapkan dalam fungsi segi empat tepat, ia mencipta rujukan baharu kepada objek yang boleh diubah suai dalam kedua-dua fungsi segi empat tepat dan kawasan, walaupun fungsi kawasan tidak menerima parameter saya secara langsung.

Atas ialah kandungan terperinci Rujukan Pass-by-Value dalam JavaScript: Bagaimanakah Objek dan Primitif Berkelakuan dalam Panggilan Fungsi?. 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