1、變量:函數
以下:spa
1 let num=1; 2 let num1=num; 3 num=num+2; 4 console.log(num,num1);
輸出:指針
1 let obj={}; 2 let obj1=obj; 3 obj.name='tom'; 4 console.log(obj,obj1);
輸出:code
總結:對象
2、函數傳參blog
不管是基本類型仍是引用類型在函數傳參都是按值傳參。內存
也許你們都會有疑惑爲何變量要基本類型和引用類型 一個按值 一個按引用?作用域
1 test=(num)=>{ 2 num+=1; 3 console.log(num); 4 }; 5 let testVal=2; 6 test(testVal); 7 console.log(testVal);//2
1 testObj=(obj)=>{ 2 obj=new Object(); 3 obj.name='evil'; 4 console.log(obj.name); 5 }; 6 let testMyObj={name:'jack'}; 7 testObj(testMyObj); 8 console.log(testMyObj.name);//jack
引用類型傳遞是對象的內存地址,而不是引用,若是是引用那麼在函數testObj 在函數做用域中的局部變量obj在改變引用的時候,函數外層的testMyObj輸出的name值應該是evil,而不是jack 因此顯然傳遞的值即對象在堆中的內存地址。console