数据类型和包装类型

98 阅读2分钟

2. 值和引用

JS的基本数据类型有哪些?基本数据类型和引用数据类型的区别

回答:

在js中,数据类型可以分为:基本类型和引用类型

7种基本数据类型

string, number, boolean, undefined, null, symbol, bigInt

symbol是ES6新添加的基本数据类型,BigInt 是 ES11(即 ECMAScript 2020)标准新增的内容

引用数据类型只有一种:

object

基本数据类型的值称为 原始值 或 简单值

引用数据类型的值称为 复杂值 或 引用值

二者区别在于:

原始值表示JS种可用的数据或信息的最底层形式或最简单形式。简单值被称为原始值,是因为它们是不可细化的

原始值的数据是存储于内存中的栈区里面的

引用值object,是一个对象,因为对象可以向下拆分成多个简单值或复杂值

引用值在内存中的大小是未知的,因为引用值可以包含任何值。所以存在堆区

总结:

  1. 访问方式

  • 原始值:访问到的是值

  • 引用值:访问到的是引用地址

  1. 比较方式

  • 原始值:比较的是值

  • 引用值:比较的是地址

  1. 动态属性

  • 原始值:无法添加动态属性

  • 引用值:可以添加

  1. 变量赋值:

  • 原始值:赋值的是值
  • 引用值:赋值的是地址

比较方式

简单值采用值比较,复杂之采用引用比较

var a = 10;
var b = 10;
log(a === b) //true
​
var c = new Number(10) // Number {10}
var d = c
log(c === d) //true
d = 10
log(c === d) //false

3. 包装类型

ES提供了三种特殊引用类型(包装类型):Boolean、Number、String

包装对象,就是当基本类型以对象的方式去使用时,JavaScript 会转换成对应的包装类型,相当于 new 一个对象,内容和基本类型的内容一样,然后当操作完成再去访问的时候,这个临时对象会被销毁,然后再访问时候就是 undefined。

number、string、boolean 都有对应的包装类型。

var isTure = new Boolean(true)
var num = new Number(10)
var str = new String('string')

因为有了基本包装类型,所以JavaScript 中的基本类型值可以被当作对象来访问。

基本类型特征:

  1. 每个包装类型都映射到同名的基本类型
  2. 在读取模式下访问基本类型值时,就会创建对应的基本包装类型的一个对象,从而方便了数据操作
  3. 操作基本类型值的语句一经执行完毕,就会立即销毁新创建的包装对象