写该系列文章的初衷是“让每位前端工程师掌握高频知识点,为工作助力”。这是前端百题斩的第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.关注公众号执鸢者,与号主一起斩杀前端百题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。