JavaScript memang menyeronokkan. Pertimbangkan contoh ini:
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 menghasilkan output:
10 changed unchanged
obj1
根本不是引用,則更改 obj1.item
不會(huì)對函數(shù)外部的 obj1
mempunyai sebarang impak. num
將是 100
,而 obj2.item
將讀取“changed”
。相反,num
保持 10
且 obj2.item
保持“不變
”.Sebaliknya, apa yang berlaku ialah item yang diluluskan dilalui oleh nilai. Tetapi item yang diluluskan oleh nilai itu sendiri adalah rujukan. Secara teknikal, ini dipanggil panggilan kongsi.
Dalam amalan, ini bermakna jika anda menukar parameter itu sendiri (seperti num
和 obj2
),則不會(huì)影響輸入到范圍。但是,如果您更改參數(shù)的內(nèi)部,它將向上傳播(與 obj1
lakukan).