js 傳值賦值-傳址賦值

1.傳值(基礎範例)
賦值操縱的右側是基礎範例時, 做的是一個值拷貝, 此時內存中有兩個數據, 賦值完后, 左側和右側變量的地點指向不一樣

let programModel = [
    {lastProgramNum:2,lastAudioNum:[3,3]},
    {lastProgramNum:0,lastAudioNum:[]},
    {lastProgramNum:0,lastAudioNum:[]}
];

function ace() {
    let a = programModel[1].lastProgramNum;
    a = 10;
}
console.log(programModel);

輸出, 能夠看到, 這個2並沒有發作轉變

[ { lastProgramNum: 2, lastAudioNum: [ 3, 3 ] },
  { lastProgramNum: 0, lastAudioNum: [] },
  { lastProgramNum: 0, lastAudioNum: [] } ]

2.傳址(對象)
賦值操縱的右側是一個對象時, 通報的是一個地點值, 此時的a 和 programModel[0].lastAudioNum 指向的是同一個地點, 指向內存中的同一個數據

let programModel = [
    {lastProgramNum:2,lastAudioNum:[3,3]},
    {lastProgramNum:0,lastAudioNum:[]},
    {lastProgramNum:0,lastAudioNum:[]}
];
function ace() {
    let a = programModel[0].lastAudioNum;
    a[1] = 10;
}
ace();
console.log(programModel);

輸出, 能夠看到改成了10

[ { lastProgramNum: 2, lastAudioNum: [ 3, 10 ] },
  { lastProgramNum: 0, lastAudioNum: [] },
  { lastProgramNum: 0, lastAudioNum: [] } ]
    原文作者:nine
    原文地址: https://segmentfault.com/a/1190000014473210
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞