当前位置: 首页 > news >正文

关于js数据类型的理解

目录标题

    • 一、js数据类型分为 基本数据类型和引用数据类型
    • 二、区别:传值和传址
    • 三、深浅拷贝传值
    • 四、数据类型的判断

一、js数据类型分为 基本数据类型和引用数据类型

1、基本数据类型
Number、String、Boolean、Null、undefined、BigInt、Symbol
2、引用数据类型
像对象、数组、日期、正则等等

二、区别:传值和传址

基本数据类型是传值
引用数据类型传的是地址
举列子
在这里插入图片描述

在这里插入图片描述

三、深浅拷贝传值

浅拷贝和深拷贝都是只针对于像Object,Array这样的复杂对象
浅拷贝只复制对象的第一层属性、深拷贝可以对对象的属性进行递归复制

使得引用数据类型传递的是值而不是地址
1、扩展运输符
2、concat
3、循环赋值
4、JSON转换

1、扩展运输符

//1、扩展运输符let a=[[1,2,3],"aaasss",123,"add"]let b = [...a]b[0]="6"console.log("a=",a);console.log("b=",b);

在这里插入图片描述
2、concat

//2、concatlet a=[[1,2,3],"aaasss",123,"add"]let c=[].concat(a)c[0]=8console.log("c=",c);console.log("a=",a);

在这里插入图片描述
3、循环赋值

//3、循环赋值
let a=[[1,2,3],"aaasss",123,"add"]
let d = []
a.forEach((item,index)=>{d[index]=item
})
d[1]="ddd"
console.log("d为",d);
console.log("a为",a);

在这里插入图片描述
4、JSON转换

//4、JSON转换const a = { name: 'Jerry', age: 20 }const b = JSON.parse(JSON.stringify(a))console.log(a, b)b.name = 'Tom'console.log(a, b)a.name = 'Jack'console.log(a, b)

在这里插入图片描述

注意:方法1、2、3如果引用数据类型嵌套引用数据类型,传的还是地址

//3、循环赋值let d = []a.forEach((item,index)=>{d[index]=item})d[0][0]="ddd"console.log("d为",d);console.log("a为",a);

在这里插入图片描述
json深拷贝

//4、JSON转换const a = { name: 'Jerry', age: 20 ,friend:["玛丽","小米","小敏"]}const b = JSON.parse(JSON.stringify(a))console.log(a, b)b.friend[0]="小明"console.log(a, b)

在这里插入图片描述

四、数据类型的判断

1、typeof
2、instanceof
3、constructor
4、Object.prototype.toString.call()

1、typeof
在这里插入图片描述

2、instanceof
在这里插入图片描述

3、constructor
constructor是prototype对象上的属性,指向构造函数,undefined和null没有constructor属性
写法

let n1=628
console.log(n1.constructor == Number); //结果true

4、Object.prototype.toString.call()
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/37502.html

相关文章:

  • 大一上计算机期末考试考点
  • 微搭问搭001-如何清空表单的数据
  • Windows7,10使用:Vagrant+VirtualBox 安装 centos7
  • 基于JavaEE开发博客系统项目开发与设计(附源码)
  • Android Framework——zygote 启动 SystemServer
  • 在ubuntu上搭建SSH和FTP和NFS和TFTP
  • ThinkPHP 6.1 模板篇之文件加载
  • 操作系统内核与安全分析课程笔记【1】链表、汇编与makefile
  • 华为OD机试题 - 九宫格按键输入(JavaScript)| 机考必刷
  • PMSM控制_foc 控制环路
  • Linux 练习七 (IPC 共享内存)
  • 【数据库原理复习】ch4 完整性约束 SQL定义
  • 【2023年的就业形势依旧严峻】
  • Linux下LED灯驱动模板详解
  • 【C++】你不得不爱的——继承
  • 数据库系统概论
  • 32位处理器AM6528BACDXEA、AM6548BACDXEAF基于Arm Cortex-A53内核【工业4.0嵌入式产品应用】
  • 多图片怎么转换成PDF?这招教你轻松转换
  • kali双网卡
  • 【wed前端初级课程】第一章 什么是HTML
  • sd卡格式化后数据恢复怎么操作
  • 论文阅读笔记|大规模多标签文本分类
  • 国际化翻译navigator.language与语种对照表
  • Matlab进阶绘图第6期—雷达图/蜘蛛图/星图
  • Javascript的ES6 class写法和ES5闭包写法性能对比
  • 探秘MySQL——全面了解索引、索引优化规则
  • 战斗力最强排行榜:10-30人团队任务管理工具
  • 2023-03-09干活小计
  • 基数排序算法
  • 项目实战典型案例24——xxljob控制台不打印日志排查