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

JavaScript 是一種按引用傳遞還是按值傳遞的語言?
P粉450744515
P粉450744515 2023-08-23 18:58:12
0
1
639
<p>原始類型(數(shù)字、字符串等)是按值傳遞的,但對象是未知的,因為它們都可以是按值傳遞的(在這種情況下,我們認為保存對象的變量實際上是一個對對象的引用)和按引用傳遞(當(dāng)我們認為對象的變量保存對象本身時)。</p> <p>雖然最后并不重要,但我想知道呈現(xiàn)參數(shù)傳遞約定的正確方法是什么。 JavaScript 規(guī)范是否有摘錄,它定義了與此相關(guān)的語義?</p>
P粉450744515
P粉450744515

全部回復(fù)(1)
P粉231112437

JavaScript 很有趣??紤]這個例子:

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);

這會產(chǎn)生輸出:

10
changed
unchanged
  • 如果 obj1 根本不是引用,則更改 obj1.item 不會對函數(shù)外部的 obj1 產(chǎn)生任何影響。
  • 如果參數(shù)是正確的引用,那么一切都會改變。 num 將是 100,而 obj2.item 將讀取“changed”。相反,num 保持 10obj2.item 保持“不變”。

相反,情況是傳入的項是按值傳遞的。但是按值傳遞的項本身就是一個引用。 從技術(shù)上講,這稱為共享呼叫。

實際上,這意味著如果您更改參數(shù)本身(如 numobj2),則不會影響輸入到范圍。但是,如果您更改參數(shù)的內(nèi)部,它將向上傳播(與 obj1 一樣)。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板