1. 程式人生 > >js中的值傳遞和引用傳遞

js中的值傳遞和引用傳遞

遇到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{
       理解為值傳遞
      }