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: [] } ]