js 傳值賦值-傳址賦值

1.傳值(基本類型)
賦值操做的右邊是基本類型時, 作的是一個值拷貝, 此時內存中有兩個數據, 賦值完後, 左邊和右邊變量的地址指向不同javascript

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並無發生改變java

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

2.傳址(對象)
賦值操做的右邊是一個對象時, 傳遞的是一個地址值, 此時的a 和 programModel[0].lastAudioNum 指向的是同一個地址, 指向內存中的同一個數據code

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: [] } ]
相關文章
相關標籤/搜索