JS基础 之最新8种数据类型(原始数据类型和引用数据类型)

一、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而已。

  • 引用值:在将一个保存着对象内存地址的变量复制给另一个变量时,会把这个内存地址赋值给新变量,也就是说这两个变量都指向了堆内存中的同一个对象,他们中任何一个作出的改变都会反映在另一个身上。

你可能感兴趣的:(JS基础 之最新8种数据类型(原始数据类型和引用数据类型))