javascript 简单、繁杂类型、栈、堆笔记
简单数据类型
值类型:在存储变量中的是值本身
简单数据类型 null返回的是空的对象
string,number,Boolean,undefined,null
繁杂数据类型
引用类型:在存储变量中仅仅是地址,因此叫做引用数据类型
通过new关键字创建的对象(系统对象,自定义对象)
栈、堆
栈:由操作系统分配释放存放函数的参数值,局部变量的值等。其他操作方式类似于数据结构中的栈
简单数据类型存放到栈里面 里面之间开辟空间存值
堆:存储繁杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收
繁杂数据类型存放到堆里面 首先在栈里面存放地址 16进制 地址指向堆里面的数据
简单类型传参
函数的形参可以看做是一个变量,当我们把一个值类型的变量做为参数传给函数形参的时候,其实就是把变量在栈空间里面的值复制了一份给形参,那么在方法内部对形参做任何修改都不会影响外部的变量
繁杂类型传参
函数的形参可以看做是一个变量,当前面把引用类型变量传给形参的时候,其实就是把变量在栈空间保存的堆地址复制给了形参,形参和实参保存的是同一个堆地址,所以操作的是同一个对象
// 简单类型传参 function fn(a) { a++; console.log(a); } var x = 10; fn(x) console.log(x); // 繁杂类型传参 function Person(name) { this.name = name; } function fn1(x) { console.log(x.name); x.name = '张学友' console.log(x.name); } var p = new Person("刘德华") console.log(p.name); fn1(p) console.log(p.name);