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.釋放內存
局部變量:函數執行完成後自動釋放
對象:成爲垃圾對象===>垃圾回收器回收
全局變量:通常不會釋放生命週期