Adakah JavaScript bahasa yang menggunakan rujukan lulus atau nilai lulus?
P粉002546490
P粉002546490 2023-10-11 17:50:30
0
1
570

Jenis primitif (nombor, rentetan, dsb.) diluluskan mengikut nilai, tetapi objek tidak diketahui kerana semuanya boleh diluluskan mengikut nilai (dalam kes ini, kami berpendapat bahawa pembolehubah yang memegang objek sebenarnya merujuk kepada objek ) dan lulus dengan rujukan (apabila kita memikirkan pembolehubah objek sebagai memegang objek itu sendiri).

Walaupun tidak penting pada akhirnya, saya ingin tahu apakah cara yang betul untuk membentangkan konvensyen lulus parameter. Adakah terdapat petikan daripada spesifikasi JavaScript yang mentakrifkan semantik yang berkaitan dengan ini?

P粉002546490
P粉002546490

membalas semua (1)
P粉195402292

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
  • Jikaobj1根本不是引用,则更改obj1.item不会对函数外部的obj1mempunyai sebarang kesan.
  • Jika parameter adalah rujukan yang betul, semuanya berubah.num将是100,而obj2.item将读取“changed”。相反,num保持10obj2.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 dipanggilpanggilan kongsi.

Dalam amalan, ini bermakna jika anda menukar parameter itu sendiri (sepertinumobj2),则不会影响输入到范围。但是,如果您更改参数的内部,它将向上传播(与obj1lakukan).

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!