js数据类型
js 数据类型有8种
在ES5,数据类型是 6种:Number、String、Boolean、undefined、object、Null。
在ES6 中新增了一种 Symbol
。这种类型的对象永不相等,即使创建的时候传入相同的值。可以解决属性名冲突的问题,做为标记。
谷歌67版本中还出现了一种 bigInt。是指安全存储、操作大整数。(但是很多人不把这个做为一个类型)。
js数据类型:
Number、String、Boolean、Null、undefined、object、symbol、bigInt
其中包含:基本数据类型、复杂数据类型、引用数据类型。
基本数据类型: 除Object之外的都是
引用数据类型:object,里面包含的 function、Array、Date
对于基本数据类型来说,它的值直接存储在栈内存中,而对于引用类型来说,它在栈内存中仅仅存储了一个引用,而真正的数据存储在堆内存中
当我们对数据进行操作的时候,会发生两种情况
一、基本数据类型
我们可以看到,基本数据类型数据的值赋值于一个变量stringA
,再将a的值赋值于变量stringB
, 后修改stringB
的值,可以看到stringB
的值被修改了,而stringA
的值没有被修改。两个变量都使用独立的数据。
二、引用数据类型
可以看到的是,两个对象的值都被修改了
对象是引用类型的值,对于引用类型来说,我们将 obj
赋予newObj
的时候,其实仅仅只是把 obj
存储在栈堆中的的引用赋予了 newObj
,而两个对象此时指向的是在堆内存中的同一个数据,所以当我们修改任意一个值的时候,修改的都是堆内存中的数据,而不是引用,所以只要修改了,同样引用的对象的值也自然而然的发生了改变。
如遇需要改变引用数组值且不改变原数组的场景,请看下篇文章: