JS是值传递类型
值传递:形参是实参值的一个副本,对形参的改变不会影响实参
引用传递:形参实际上是对实参引用变量的复制,实参、形参都指向同一个对象实体,形参改变会同时改变实参的值。
基本类型是按值传递的
var a =1 ;
function foo(x) {
x = 2;
}
console.log(a) //1
对象传入的是对象指向的地址
let object = { a: 0 };
function fun(obj) {
obj.a = 1;
obj = { a: 2 };
obj.b = 2;
obj.a = 3;
console.log(obj)
}
fun(object); //{a:3,b:2}
console.log(object.a) //1
- 改变对象的内部属性:将object的对象地址传递给obj,object与obj指向同一个对象地址,改变obj的属性,object也会变化,因为共同指向的这个对象被修改了
- 参数赋值另一个对象:obj指向了新的对象,与object相互独立