写该系列文章的初衷是“让每位前端工程师把握高频知识点,为工作助力”。这是前端百题斩的第3斩,心愿敌人们关注公众号“执鸢者”,用常识武装本人的头脑
3.1 根本类型
js中根本数据类型蕴含:Number(数值)、String(字符串)、Boolean(布尔值)、Null、Undefined、Symbol(ES6引入的,示意举世无双的),其有以下特点:
- 根本类型的拜访是按值拜访的;
- 不能增加属性和办法;
- 根本类型的变量时存在放栈区的,包含变量标识符和变量的值。(栈区不会设置太大,次要用来存在根本类型);
- 根本类型的复制就是在栈内存中开拓一个新的存储区域来存储新的变量;
- 根本类型的比拟是值比拟的。
3.2 援用类型
js中援用类型蕴含三类:
- 根本援用类型:Object(对象)、Array、RegExp、Date、Function;
- 根本包装类型:String、Number、Boolean;
- 单体内置对象:Global、Math。
其具备以下特点:
- 援用类型的值是按援用拜访的;
- 援用类型能够领有属性和办法,且可动静扭转;
- 存储须要内存的栈区和堆区,其中栈区保留变量标识符和指向内存中该对象的指针;
- 援用类型的比拟是援用的比拟;
- 援用类型的复制将复制援用地址。
3.3 扩大——为什么须要“栈”和“堆”两个存储空间
因为JavaScript引擎须要用栈来维护程序执行期间上下文的状态(调用栈),如果栈空间太大的话(即所有数据都存储在栈空间中),会影响上下文的切换效率,进而影响整个程序的执行效率,所以通常状况下栈空间不会设置太大,用于存储根本类型这样的小数据,而援用类型将存储到堆中。
1.如果感觉这篇文章还不错,来个分享、点赞吧,让更多的人也看到
2.关注公众号执鸢者,与号主一起斩杀前端百题。