一、JS数据类型分为两类原始数据类型和引用数据类型
二、原始数据类型
javascript 的原始数据类型有七种,分别是Number、String、Boolean、null、undefined、symbol 、 BigInt
原始类型数据的特点:值保存在变量本地,且赋值给其他变量后,其它变量改变不影响原来的值,变量存放在栈区的(栈区指内存里的栈内存).
1.boolean true & false
专门用来保存真或者假的类型,值二选一
2.null 空值类型
不指向任何地址,用于手动赋值,清空内容
3.undefined 未定义类型
只有一个值undefined,用于没有赋值的变量的默认值
4.number 数值类型
专门保存数字的类型,用于进行数学计算等的数值.
所占空间:64位(8个字节)二进制保存.注:一个字节8个位.
5.string 字符串类型
专门用来保存字符串的类型;" ",用来存储字符串类型的文本.
所占空间:使用unicode标识的.英文字母和标点对应的是1字节,而一个汉字对应的则是两个字节.
6.symbol (ES6新增)
本质上是一种唯一标识符,可用作对象的唯一属性名
7.BigInt (最新)
用于当整数值大于Number数据类型支持的范围时
1、要创建BigInt,只需要在数字末尾追加n即可
console.log( 9007199254740995n ); // → 9007199254740995n
2、创建BigInt的方法是用BigInt()构造函数
BigInt("9007199254740995"); // → 9007199254740995n
三、引用数据类型
Object,Function,Array (在JS中除了基本数据类型以外的都是对象,数组是对象,函数是对象,正则表达式是对象)
引用数据类型的特点:引用类型的值是可变的;引用类型的值是保存堆内存中的对象;引用数据类型值的比较本质上是内存地址的比较.
四、两种数据类型的区别
1、声明变量时内存分配不同
-
原始类型:在栈中,因为占据空间是固定的,可以将他们存在较小的内存中-栈中,这样便于迅速查询变量的值
-
引用类型:存在堆中,栈中存储的变量,只是用来查找堆中的引用地址。
2、访问机制不同
- 在javascript中是不允许直接访问保存在堆内存中的对象的,所以在访问一个对象时,首先得到的是这个对象在堆内存中的地址,然后再按照这个地址去获得这个对象中的值,这就是按引用访问。
- 而原始类型的值则是可以直接访问到的。
3、复制变量时的不同
-
原始值:在将一个保存着原始值的变量复制给另一个变量时,会将原始值的副本赋值给新变量,此后这两个变量是完全独立的,他们只是拥有相同的value而已。
-
引用值:在将一个保存着对象内存地址的变量复制给另一个变量时,会把这个内存地址赋值给新变量,也就是说这两个变量都指向了堆内存中的同一个对象,他们中任何一个作出的改变都会反映在另一个身上。
网友评论