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
浙公网安备 33010602011771号