JavaScript有哪些数据类型???
Javascript共有8种数据,分别是Nndefined、Null、String、Number、Boolean、Object、BigInt、Symbol。
其中Symbol、BigInt是es6中新增的数据类型:
- Symbol代表创建后独一无二且不可变的数据类型,主要为了解决可能出现的全局变量冲突的问题。
- BigInt是一种可以表示任意精度格式整数的数据类型,它可以安全地存储和操作大整数,即便这个整数超过了Number的安全范围。
我们还能将数据类型分为以下两种:
- 栈:原始(基本)数据类型(Undefined、Null、Boolean、Number、String)
- 这些基本数据存储在栈中的简单数据段,所占空间小、大小固定,属于被频繁使用的数据,所以放在栈中。
- 堆:引用数据类型(对象、数组和函数)
- 引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定。如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。
补充小知识
const a = 1
a = 2 //错误
const b = {name:'小明' ;age = 12}
b.name = '小红' //正确
//我们通常用const定义的值是不可改变的,但是由于引用数据类型存储在堆中,而对于引用数据类型const实质只是不能改变它的起始地址,也就是指向堆中实体的指针,所以我们仍然可以改变对象中的属性。