JS引用类型

1.JS中的类型

  • 基本类型

    String

    Boolean

    Number

    undefined

    Null

    Symbol

  • 引用类型

    Object

对于基本类型,=代表的是值得拷贝,===代表的是值得比较。

对于引用类型,=代表的是引用地址的拷贝,===代表的是引用地址的比较。

2.几个例子深入理解

  • 案例一
let a = 1;
let b = a;
a === b // true
b = 2;
a === 1 ; //true

基本类型Number,赋值为拷贝,当 b改变的时候不会影响到a

  • 案例二
let a = {};
let b = {};
let c = a ;
a === b //false
a === c //true

引用类型Object,比较的是引用地址,ab的引用地址明显是不同的,所以他们不相等。

c得到了a的引用的地址,因此a===c

  • 案例三
let a = {name:'张三',info:{age:11,sex:'男'}};
let b = a;
b.info.age = 22;
a === b //true
a.info.age === 22 //true

因为ab指向同一个地址,所以b做修改的时候,a同样修改了。

  • 案例四
let a = {name:'张三',info:{age:11,sex:'男'}};
let b = a ; //展开运算符浅拷贝
a === b //false
a.name === b.name //true
a.info === b.info //true

因为展开运算符是浅拷贝,所以两个对象指向不同的地址,即a!==b

但是浅拷贝毕竟是浅拷贝。

name是基本类型,拷贝的值,所以相同。

info为引用类型,拷贝的地址,也相同。

  • 案例五
let a = {name:'张三',info:{age:11,sex:'男'}};
let b = JSON.parse(JSON.stringify) ; //深拷贝
a === b //false
a.name === b.name //true
a.info === b.info //false
a.info.age === b.info.age//true

深拷贝了,其他的不用说。

因为深拷贝过了,info指向的就是各自的地址了,没啥关系了。

但是基本类型该相同相同。

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

推荐阅读更多精彩内容

  • 引用类型 引用类型变量保存的仅仅是一个指针,指针指向堆内存中保存对象的位置。 所以基本类型复制的时候仅仅复制值,复...
    DeeJay_Y阅读 592评论 0 0
  • 引用类型有哪些?非引用类型有哪些 基本类型值(数值、布尔值、null和undefined、string和symbo...
    DCbryant阅读 390评论 0 0
  • 基本类型和引用类型# ECMAScript包含两种不同的数据类型:基本类型值和引用类型值; 基本类型值指的是保存在...
    草鞋弟阅读 514评论 0 0
  • 1.引用类型有哪些?非引用类型有哪些 引用类型是指那些保存在堆内存中的对象。变量中保存的实际上只是一个指针,这个指...
    高进哥哥阅读 321评论 0 0
  • 一、函数的定义 定义函数有三种方式:函数声明、函数表达式、Function构造函数(不推荐) 函数声明比如: fu...
    小妍妍说阅读 666评论 0 0