目标:
1.知道简单书库类型的内存分配
2.知道复杂数据类型的内存分配
3.知道简单数据类型如何传参
4.知道复杂数据类型如何传参
简单类型又叫基本数据类型或者,复杂数据类型又叫
- 值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫值类型
string , number , boolean , undefined , null- 引用类型: 复杂数据类型,在存储时,变量中存储的仅仅是地址(引用),因此叫做引用数据类型,通过new关键字创建的对象(系统对象、自定义对象),如Object、Array、Date等
<script>
var timer = null;
console.log(typeof timer);
</script>
堆栈空间分配区别:
- 1.栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等,其操作方式类似于数据结构中的栈;
(存放的是值)
- 2.堆(操作系统):存储复杂数据类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收
(复杂数据类型变量名指向的也是栈,只是栈里存放的是16进制地址,这个16进制地址又指向堆里,堆里存的才是真正的值)
函数的形参也可以看作是一个变量,当我们把一个值类型变量作为参数传给函数的形参时,其实就是把变量在栈空间里的值复制了一份给形参,那么在方法内部对形参做任何修改,都不会影响到外部变量
函数的形参也可以看作是一个变量,当我们把引用类型变量传给形参时,其实是把变量在栈空间里保存的堆地址赋值给了形参,形参和实参其实保存的是同一个堆地址,所以操作的是同一个对象