js中的值傳遞和引用傳遞
阿新 • • 發佈:2019-01-24
遇到js中的值傳遞問題,搜部落格感覺寫的太多了,有點冗餘,整理一下,挺清爽的。。。
前提:你明白值傳遞和引用傳遞意思,並理解堆疊。
var a1=100; var b1=a1; a1=1; console.log(a1,b1); //1,100 值傳遞 var a2=[1,2,3]; var b2=a2; var a2= [2,3,4]; console.log(a2,b2); //[2,3,4][1,2,3] 值傳遞 var a=[1,2,3]; var b=a; b.push(4); console.log(a,b); //[1,2,3,4] [1,2,3,4] //雖然操作的是b,但是a也改了 看起來像引用傳遞 //js中只有值傳遞 //1. 純粹的值傳遞 //2. 地址的值傳遞。(call by sharing) //原理:基本資料型別(字串,數值,布林)操作在棧中,直接賦值。 //但是引用資料型別(陣列,字串)在堆中操作傳遞的是**地址**, //如果不是賦值操作,物件就是共享的 //怎麼理解 if(物件或者陣列&&不是賦值操作){ / 理解為引用傳遞 }else{ 理解為值傳遞 }