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