很早的问题,记录一下
function fn(a, b ,c) {
a = a * 10;
b.item = 'changed'
c = { item: 'changed'}
}
var num = 10;
var obj1 = {item: 'unchanged'}
var obj2 = {item: 'unchanged'}
fn(num, obj1, obj2)
参数是按值传递的,但是传递的值,本身就是一个引用,技术上来说,这是按共享传递
对象参数的传递实际上是一个对象的地址。
当我们改变值本身的时候,不会对该值造成改变;但是修改值的内部属性的时候,会导致值的变化
1. 调用函数,拷贝实参给形参
2. 函数内部操作的是函数的局部变量,不影响实参的值
3. 修改值的属性,实际是通过地址找到对象并修改对象的值,则会影响到实参