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>