Memang menyeronokkan dalam JavaScript. Pertimbangkan contoh berikut:
function changeStuff(a, b, c) { a = a * 10; b.item = "changed"; c = {item: "changed"}; } var num = 10; var obj1 = {item: "unchanged"}; var obj2 = {item: "unchanged"}; changeStuff(num, obj1, obj2); console.log(num); console.log(obj1.item); console.log(obj2.item);
Ini akan menghasilkan output berikut:
10 changed unchanged
obj1
根本不是引用,那么改變obj1.item
對(duì)函數(shù)外部的obj1
tiada impak. num
將為100
,obj2.item
將為"changed"
。相反,num
保持為10
,obj2.item
仍然為"unchanged
".Sebenarnya, apa yang berlaku ialah item yang lulus lulus nilai. Tetapi item yang diluluskan oleh nilai itu sendiri adalah rujukan. Secara teknikal, ini dipanggil panggilan kongsi.
Dalam aplikasi praktikal, ini bermakna jika anda menukar parameter itu sendiri (seperti num
和obj2
),那不會(huì)影響傳入?yún)?shù)的項(xiàng)。但是,如果更改參數(shù)的內(nèi)部,那將會(huì)傳播回來(lái)(如obj1
).