函数参数也会产生对象引用吗?

调用函数的时候参数也一样会对原对象进行引用吗?

最后使用parse,stringify 解决了,但是还是不理解

function operation(i, j, formData, data){ 
    formData = JSON.parse(JSON.stringify(formData))
    data = JSON.parse(JSON.stringify(data))
}
阅读 1.6k
2 个回答

函数参数跟赋值一样,基本类型传值,引用类型传递引用

js中对象引用问题任何地方调用都存在的

// 基本类型
function test(a) {
    a = 2
}

let a = 1
test(a)
// a = 1


// 引用类型
function test(obj) {
    obj.name = 'b'
}

let obj = {name:'a'}
test(obj)
// a.name = b

var x = { a: 1 };
x变量的内存地址里存了一个对象的地址,而不是对象的值。

x.a = 2;
对象地址寻找到对象值,并把值改了,但对象地址没变

var y = x;
x把对象的地址传给了y。两个变量共享了同一个对象的地址。test(obj)就可以理解为把对象地址传给了函数。

对象的传递一定是地址的传递,而不是值传递。因为这个地址被当成一个值存放在变量内

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题