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>
JS之数据_变量_内存v(**V**)v(2)
原文地址:https://www.cnblogs.com/junxiaobai/p/10332275.html