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

 1  <script >
 2     //*Q:在JS调用函数传递的参数时,到底是值传递还是引用传递
 3     //*A:理解一:都是值(基本/地址值)传递
 4     //    理解二:可能是值传递,也可能是引用传递(地址值)
 5     //*Q:JS引擎如何管理内存?
 6     //*A:分配一块小内存,得到他的使用权
 7     //    存储数据,可以反复进行操作
 8     //    释放小内存空间
 9     //小知识点:释放内存
10     //    局部变量:函数执行完自动释放
11     //    对象:成为垃圾对象==>垃圾回收器回收
12    var a=3//这里的a是一个变量(全局变量)
13     function fn (a) {//这里的a是另一个变量(局部变量),这里有一步:a=a(前面的是局部变量后面的是全局变量)
14       a=a+3//左边是写右边是读,这里的a是一个垃圾数据,没有被引用,所以输出的是3
15     }
16     fn(a)//这里操作的a是3
17     console.log(a)//输出的是3
18 
19     function fn2 (obj) {
20       console.log(obj.name)
21     }
22     var obj={name:'Tom'}
23     fn2(obj)
24 
25     var a=3//这里a=3占用一个内存空间
26     var obj={}//这里obj占用一个内存空间,{}占用一个内存空间
27     objj=null//这里释放了对象的空间,而obj空间没有被释放
28 
29     function fn3 () {
30       var b={}//局部变量执行到这里的时候没又将b的值放到内存中,要执行到fn的才将b的值放到内存中,函数执行完就会释放
31     }
32     fn()//这里b被释放,b指向的对象被垃圾回收器回收
33   </script>

猜你喜欢

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