var obj1 = {name: 'Tom'} var obj2 = obj1 //将obj1内存中保存的地址值给obj2的内存中保存 obj1.name = 'Jack' console.log(obj2.name) // Jack obj2.sex = '男' console.log(obj1.sex) // 男 function func(obj) { obj.name = 'Sun' } func(obj1) // 将obj1实参赋值给形参obj console.log(obj2.name) // Sun
注:2个引用变量指向同一个对象,经过一个变量改变对象内部数据,另外一个变量看到的是修改后的数据函数
var a = {age: 12} var b = a a = {name: 'HM', age: 15} b.age = 14 console.log(b.age, a.age) // 14 15 function func1(obj) { obj = {age: 18} } func1(a) console.log(a.age) // 15
注:2个引用变量指向同一个对象,让其中一个引用变量指向另外一个对象,另外一个引用变量依然指向前一个对象code
理解1:都是值(基本类型/地址值)传递
理解2:多是值传递,也多是引用传递(地址值)对象
1.内存生命周期
分配小内存空间,获得它的使用权
存储数据,能够反复进行操做
释放小内存空间
2.释放内存
局部变量:函数执行完成后自动释放
对象:成为垃圾对象===>垃圾回收器回收
全局变量:通常不会释放生命周期