Rumah > Soal Jawab > teks badan
P粉4269063692023-08-22 13:30:26
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
对函数外部的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
),那不会影响传入参数的项。但是,如果更改参数的内部,那将会传播回来(如obj1
).