JavaScript数据类型有几种?
在ES5的时候,我们认知的数据类型确实是 6种:Number、String、Boolean、undefined、object、Null。
ES6 中新增了一种 Symbol 。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。
谷歌67版本中还出现了一种 bigInt。是指安全存储、操作大整数。(但是很多人不把这个做为一个类型)。
JS数据类型:JS 的数据核局早类型有几种?
8种。Number、String、Boolean、Null、undefined、object、改雀symbol、bigInt。
JS数据类型:Object 中包含了哪几种类型?
其中包含了Data、function、Array等。这三种是常规用的。
JS数据类型:JS的基本类型和腊轮引用类型有哪些呢?
基本类型(单类型):除Object。 String、Number、boolean、null、undefined。
引用类型:object。里面包含的 function、Array、Date。
JS简单数据类型和复杂数据类型
简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。
简单数据类型在存储时,变量中存储的是值本身,因此叫做值类型。
string、number、boolean、undefined、null
null是特殊存在,返回的是object,如果要创建空对象,可以用null。
用new创建的都是复杂数据类型
(1)栈:由操作系统自动答毁分配释放存放函数的参数值、局部变量的值等。其操作系统类似于数据结果中的栈。
简单数据类型存放到栈里清贺备面
(2)堆:一般由程序员分配释放,若程序员拍谨不释放,由垃圾回收机制回收。
复杂数据类型存放到堆里面
js知识版图-引用类型赋值、浅拷贝、深拷贝
我们先来复习下数据类型相关知识:
此处引申知识点:基本数据类型
这里所说的赋值是对象的引用赋值,当我们把一个对象赋值给一个新的变量时,赋的其实是该对象在栈中的地址,而不是堆中的数据。也就是两个对象指向的是同一个存储空间,无论哪个对象发生改变枯芦,其实都是改变的存储空间的内容,因此,两个对象是联动的。
浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址,因此如果其中一个对象改变了这个地址,就会影响到另一个对象。即默认拷贝构造函数只是对对象进行浅拷贝复制(逐个成员依次拷贝),即只复制对象空颤羡间而不复制资源。
由此可见浅拷贝只解决了第一层的问题,如果接下去的值中还有对象,两者享有相同的地址。
深拷贝会另外创造一个茄败拍一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。