Adakah JavaScript bahasa rujukan lulus atau nilai lulus?
P粉450744515
2023-08-23 18:58:12
<p>Jenis primitif (nombor, rentetan, dsb.) diluluskan mengikut nilai, tetapi objek tidak diketahui kerana kesemuanya boleh diluluskan mengikut nilai (dalam kes ini pembolehubah yang kami fikir memegang objek sebenarnya merujuk kepada objek) dan rujukan lulus (apabila kita memikirkan pembolehubah objek sebagai memegang objek itu sendiri). </p>
<p>Walaupun ia tidak penting pada akhirnya, saya ingin mengetahui cara yang betul untuk membentangkan konvensyen lulus parameter. Adakah terdapat petikan daripada spesifikasi JavaScript yang mentakrifkan semantik yang berkaitan dengan ini? </p>
JavaScript memang menyeronokkan. Pertimbangkan contoh ini:
Ini menghasilkan output:
obj1
根本不是引用,则更改obj1.item
不会对函数外部的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
),则不会影响输入到范围。但是,如果您更改参数的内部,它将向上传播(与obj1
lakukan).