JS引用类型

作者: _Storm | 来源:发表于2018-12-12 11:09 被阅读0次

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指向的就是各自的地址了,没啥关系了。

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

相关文章

  • Js基础知识-手动实现深拷贝

    本文将手动实现引用类型的深拷贝关于值类型与引用类型可阅读下方文章:JS基础类型直通车:Js基础知识-变量类型Js基...

  • 慕课网-前端JavaScript面试技巧笔记

    js中使用 typeof 能得到哪些类型? 考察点:JS变量类型值类型VS引用类型,引用类型可以无限制扩展属性 何...

  • 深拷贝与浅拷贝

    一.引用类型与值类型 我们都知道,js有两种基本类型,引用类型与值类型。引用类型的“=”只是拷贝了引用,而基本类型...

  • JS 基础知识巩固(JS面试宝典-全面透彻)

    第一章:JS 基础上篇(js 类型) 值类型 引用类型 问题:为什么对值类型和引用类型进行修改会出现不同的结果呢?...

  • js基本类型与引用类型

    1.js基本类型和引用类型 首先js的变量有两种类型,基本类型值和引用类型值 基本数据类型:null,undefi...

  • Web前端必知篇:原型链的讲解

    js中的数据类型 js中的数据类型有两种,1是基本数据类型,2是引用数据类型。引用数据类型又可分为原生引用类型和自...

  • js引用类型

    引用类型有哪些?非引用类型有哪些 基本类型值(数值、布尔值、null和undefined、string和symbo...

  • js引用类型

    引用类型有哪些?非引用类型有哪些2.如下代码输出什么?为什么 引用类型: 对象,数组,函数,正则非引用类型: 数值...

  • js引用类型

    引用js的三种方式 1、添加在行内的js代码,需要事件的支持(优点:方便 缺点:增加了代码的冗余性) 2、添加在b...

  • js引用类型

    1.引用类型是把数据和功能组织再一起得结构。引用类型和类主要区别就是:引用类型缺少类和接口2.引用类型通过new操...

网友评论

    本文标题:JS引用类型

    本文链接:https://www.haomeiwen.com/subject/afeuhqtx.html