ECMAScript中所有函数的参数都是按值传递的。

//也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。
  •   按值传递
1 var value = 1;
2 function foo(v) {
3     v = 2;
4     console.log(v); //2
5 }
6 foo(value);
7 console.log(value) // 1
//当传递value到函数foo中,相当于拷贝了一份value,假设拷贝的这份叫_value,函数中修改的都是_value的值,而不会影响原来的value值。

  

  •   引用传递
1 var obj = {
2     value: 1
3 };
4 function foo(o) {
5     o.value = 2;
6     console.log(o.value); //2
7 }
8 foo(obj);
9 console.log(obj.value) // 2
//就是传递对象的引用,函数内部对参数的任何改变都会影响该对象的值,因为两者引用的是同一个对象。

  

  •   共享传递
1 var obj = {
2     value: 1
3 };
4 function foo(o) {
5     o = 2;
6     console.log(o); //2
7 }
8 foo(obj);
9 console.log(obj.value) // 1
//在传递对象的时候,传递对象的引用的副本
//参数如果是基本类型是按值传递,如果是引用类型按共享传递。但是因为拷贝副本也是一种值的拷贝。

  

 

 posted on 2020-04-16 15:33  萌宝跟屁虫  阅读(59)  评论(0)    收藏  举报