JS之数据_变量_内存v(**V**)v(2)

 1 <script > 2 //*Q:var a=xxx, a内存中到底保存的是什么? 3 //*A:xxx是基本数据类型,保存的是这个数据 4 // xxx是对象,保存的是对象的地址值 5 // xxx是一个变量,保存的是xxx的内容(可能是基本数据类型,也可能是地址值) 6  7 var a=3//基本数据类型 8 a=function () {//对象 9 10  }11 var a=3//变量12 b=a//这里传的是基本数据类型13 b={}14 a=b//这里传的是地址值15 16 //关于引用变量赋值的问题17 //2个引用变量指向同一个对象,通过一个变量修改对象内部的数据,另一个变量看到的是修改之后的数据18 //2个引用变量指向同一个对象,让其中一个引用变量指向另一个对象,另一个引用对象依然指向前一个对象19 var obj1={name:‘Tom‘}20 var obj2=obj1//注意这是将obj1中的内容赋值给obj2,这里只是内容是地址值21 obj1.name=‘Jack‘22 console.log(obj2.name)//‘Jack‘23 obj2.agej=1224 function fn (obj) {//形参25 obj.name=‘Bob‘//这里修改了对象内部的值26  }27 fn.name(obj1)//实参28 console.log(obj2.name)//Bob29 /*30  这里有三个引用变量指向对象(obj1,obj2,obj)31 */32 33 34 var a={age:12}35 b=a36 a={name:‘Tom‘}37 console.log(b.age,)//这里面只有age属性38 a={name:‘Tom‘,age:13}39 console.log(b.age,a.name,a.age)//12 Tom 1340 b.age=1441 console.log(b.age,a.name,a.age)//14 Tom 1342 //2个引用变量指向同一个对象,让其中一个引用变量指向另一个对象,另一个引用对象依然指向前一个对象43 function fn2 (obj) {//这个obj指向1344 obj={age:15}//注意这里是等于是个新的对象,在这里断了obj=15,这里成为垃圾对象,这里修改了obj中的地址值45  }46  fn2(a)47 console.log(a.age)//1348 49 </script>

 

相关文章