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>
原文地址:https://www.cnblogs.com/junxiaobai/p/10332275.html
时间: 2024-11-02 21:20:06