js有几种类型
两种:简单数据类型和引用数据类型
简单数据类型包括:Number、String、Boolean、Null、 Undefined、Symbol(ES6)
引用数据类型包括:数组,对象,函数
简单数据类型与引用数据类型的区别
简单数据类型包括:Number、String、Boolean、Null、 Undefined、Symbol(ES6)
引用数据类型包括:数组,对象,函数
区别:简单数据类型是直接按值存放在栈中,也可以直接按值访问;引用数据类型是存放在堆里的对象,它在栈中存放的是堆里面的引用地址,访问也是访问引用地址,不是直接访问值。
堆和栈的区别
栈内存:引擎执行代码时工作的内存空间,除了引擎,也用来保存基本值和引用类型值的地址。 栈内存是内存中用于存放临时变量的一片内存块。当声明一个基本变量时,它就会被存储到栈内存中。
栈内存的特点:存取速度快,但不灵活,同时由于结构简单,在变量使用完成后就可以将其释放,内存回收容易实现。堆内存:用来保存一组无序且唯一的引用类型值,可以使用栈中的键名来取得。
我们在访问引用类型时,需要在栈内存中查找 对应的地址,在去堆内存中取得真正的值,访问速度自然不及栈内存。
堆内存的特点:使用灵活,可以动态增加或删除空间,但是存取比较慢
深浅拷贝以及实现深浅拷贝的方法
深拷贝:拷贝数据,改变旧对象的数据的时候,新对象的数据不会改变
浅拷贝:拷贝引用地址,改变旧对象的数据的时候,新对象的数据也会跟着改变
实现深拷贝的方法: 1. JSON.parse(JSON.stringify()) 2. 递归for-in 3. jQuery $.extend() 4. _.cloneDeep()
实现浅拷贝的方法: 1. 剩余(扩展)运算符 2. concat() 3. Object.assign() 4. slice()
网友评论