亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Adakah JavaScript bahasa rujukan lulus atau nilai lulus?
P粉450744515
P粉450744515 2023-08-23 18:58:12
0
1
636
<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>
P粉450744515
P粉450744515

membalas semua(1)
P粉231112437

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
  • Jika obj1 根本不是引用,則更改 obj1.item 不會(huì)對函數(shù)外部的 obj1 mempunyai sebarang impak.
  • 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 dipanggil panggilan kongsi.

Dalam amalan, ini bermakna jika anda menukar parameter itu sendiri (seperti numobj2),則不會(huì)影響輸入到范圍。但是,如果您更改參數(shù)的內(nèi)部,它將向上傳播(與 obj1 lakukan).

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan