js基本类型与引用类型以及它们之间的区别

基本类型有五类:number、string、null、boolean、undefined

es6中新增基本类型Symbol和es10中新增基本类型BigInt待后续更新

引用类型有:Object   (Array、Date等)除了基本类型外都是引用类型

基本类型有以下特点:

1、值都是不可变的,一些对基本类型做处理的函数都是返回一个新的基本类型

比如一个字符串:

var name='xiaoxiao'

name.toUpperCase()//输出XIAOXIAO

console.log(name)//输出还是‘xiaoxiao’

name.age=24

console.log(name.age)//输出undefined

2、基本类型的比较是值的比较

只有他们的值相等时它们才相等

3、基本类型的变量时存放在栈区的(内存中的栈内存)


栈区包括了变量的标识符和变量的值

4、简单赋值:从一个基本类型变量到另一个基本类型变量赋值时,会在改基本变量上创建一个新值,然后把该值复制到为新变量分配的位置上

引用类型特点:

1、引用类型的值是可变的,引用类型可以拥有属性和方法,并且可以动态改变

2、引用类型的值是同时保存在栈内存和堆内存中的对象

引用类型的值是按引用访问的,引用类型的存储需要内存的栈区和堆区(内存中的堆内存)共同完成,战区内保存变量的标识符和指向堆内存中的该对象的指针

3、当从一个变量向另一个变量赋值引用类型的值时,同样也会将存储在变量中的对象的值复制一份放到为新变量分配的空间中保存在变量中的是对象在堆内存中的地址,所以,与简单赋值不同,这个值的副本实际上是一个指针,而这个指针指向存储在堆内存的一个对象。那么赋值操作后,两个变量都保存了同一个对象地址,则这两个变量指向了同一个对象。因此,改变其中任何一个变量,都会相互影响

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容