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=12
24     function fn (obj) {//形参
25       obj.name='Bob'//这里修改了对象内部的值
26     }
27     fn.name(obj1)//实参
28     console.log(obj2.name)//Bob
29     /*
30     这里有三个引用变量指向对象(obj1,obj2,obj)
31     */
32 
33 
34     var a={age:12}
35     b=a
36     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 13
40     b.age=14
41     console.log(b.age,a.name,a.age)//14 Tom 13
42     //2个引用变量指向同一个对象,让其中一个引用变量指向另一个对象,另一个引用对象依然指向前一个对象
43     function fn2 (obj) {//这个obj指向13
44       obj={age:15}//注意这里是等于是个新的对象,在这里断了obj=15,这里成为垃圾对象,这里修改了obj中的地址值
45     }
46     fn2(a)
47     console.log(a.age)//13
48     
49   </script>

猜你喜欢

转载自www.cnblogs.com/junxiaobai/p/10332275.html
V