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

Adakah parameter diluluskan dalam JavaScript mengikut nilai atau rujukan?
P粉394812277
P粉394812277 2023-08-21 15:57:16
0
1
708
<p>Jenis primitif (nombor, rentetan, dsb.) diluluskan mengikut nilai, tetapi objek tidak diketahui kerana kedua-duanya boleh diluluskan oleh nilai (dalam kes ini kita fikir pembolehubah yang memegang objek sebenarnya adalah rujukan objek), boleh juga diluluskan dengan rujukan (dalam hal ini kita menganggap pembolehubah untuk memegang objek itu sendiri). </p> <p>Walaupun ia akhirnya tidak penting, saya ingin mengetahui cara untuk memaparkan konvensyen lulus parameter dengan betul. Adakah terdapat petikan daripada spesifikasi JavaScript yang mentakrifkan semantik tentang perkara ini? </p>
P粉394812277
P粉394812277

membalas semua(1)
P粉426906369

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
  • Jikaobj1根本不是引用,那么改變obj1.item對(duì)函數(shù)外部的obj1tiada impak.
  • Jika hujah adalah rujukan yang betul, semuanya berubah. num將為100obj2.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 numobj2),那不會(huì)影響傳入?yún)?shù)的項(xiàng)。但是,如果更改參數(shù)的內(nèi)部,那將會(huì)傳播回來(lái)(如obj1).

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