前端百题斩【003】—— js中的基本类型和引用类型

写该系列文章的初衷是“让每位前端工程师掌握高频知识点,为工做助力”。这是前端百题斩的第3斩,但愿朋友们关注公众号“执鸢者”,用知识武装本身的头脑

3.1 基本类型

js中基本数据类型包含:Number(数值)、String(字符串)、Boolean(布尔值)、Null、Undefined、Symbol(ES6引入的,表示独一无二的),其有如下特色:
  1. 基本类型的访问是按值访问的;
  2. 不能添加属性和方法;
  3. 基本类型的变量时存在放栈区的,包括变量标识符和变量的值。(栈区不会设置太大,主要用来存在基本类型);
  4. 基本类型的复制就是在栈内存中开辟一个新的存储区域来存储新的变量;
  5. 基本类型的比较是值比较的。

image.png

3.2 引用类型

js中引用类型包含三类:前端

  1. 基本引用类型:Object(对象)、Array、RegExp、Date、Function;
  2. 基本包装类型:String、Number、Boolean;
  3. 单体内置对象:Global、Math。

其具备如下特色:前端工程师

  1. 引用类型的值是按引用访问的;
  2. 引用类型能够拥有属性和方法,且可动态改变;
  3. 存储须要内存的栈区和堆区,其中栈区保存变量标识符和指向内存中该对象的指针;
  4. 引用类型的比较是引用的比较;
  5. 引用类型的复制将复制引用地址。

image.png

3.3 扩展——为何须要“栈”和“堆”两个存储空间

由于JavaScript引擎须要用栈来维护程序执行期间上下文的状态(调用栈),若是栈空间太大的话(即全部数据都存储在栈空间中),会影响上下文的切换效率,进而影响整个程序的执行效率,因此一般状况下栈空间不会设置太大,用于存储基本类型这样的小数据,而引用类型将存储到堆中。

1.若是以为这篇文章还不错,来个分享、点赞吧,让更多的人也看到spa

2.关注公众号执鸢者,与号主一块儿斩杀前端百题。指针

相关文章
相关标签/搜索