关于js数据类型的理解

news2024/11/27 20:23:30

目录标题

    • 一、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、concat
 let a=[[1,2,3],"aaasss",123,"add"]
 let c=[].concat(a)
 c[0]=8
 console.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.coloradmin.cn/o/402526.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解信道估计的发展与最新研究进展(MIMO)

目录 一. MIMO信道估计的重要性 二. 最经典的两种信道估计方法 2.1 最小二乘信道估计(LS) 2.2 最小均方误差信道估计(MMSE) 三. 优化传统的MIMO信道估计技术 四. 介绍压缩感知技术 五. 基于压缩感知的MIMO信道估计 5.1 压缩感知怎么用在MIMO信道估计 5.2 改进压缩感知…

BIO,NIO,AIO

IO模型 用什么样的通道进行数据传输和接收,java支持3种io网络编程模式 BIO NIO AIO BIO 同步阻塞 一个客户端连接对应一个处理线程 BIO示例代码(客户端和服务端) package com.tuling.bio;import java.io.IOException; import java.net.So…

WIFI P2P架构

WI-FI P2P定义架构3个组件组织结构技术标准P2P DiscoveryDevice Discovery(扫描)流程p2p probe 管理帧Group Formation(组网)GO Negotiation(GON)流程P2P Public Action管理帧Provision Discovery&#xff…

Rust Web 进阶(一):Rust异步编程(Tokio)

这一篇将讲解什么是和为什么进行异步编程,Rust 怎么样进行异步编程以及其机制,并且讲解目前 rust 常用的异步编程的函数库。本章的内容来自杨旭老师的教程: https://www.bilibili.com/video/BV16r4y187P4/?spm_id_from333.999.0.0&vd_s…

ADSP21489之CCES开发笔记(七)

一、SPORT简介:ADI21489具有八个独立的同步串行端口(SPORT),可为各种外围设备提供I/O接口。他们是称为SPORT0至SPORT7,每个SPORT都有自己的一组控制寄存器和数据缓冲器,具有一定范围的时钟和帧同步选项。 二、特性:支持…

【云原生】Apisix接入Nacos、K8s服务注册中心自动获取服务

背景我在K8s中部署了两个使用SpringCLoudK8s框架的微服务,每个服务既暴露了HTTP接口方便测试,也暴露了gRpc接口更接近生产,他们的端口如下所示:常规功能上游我们可以在这里配置我们的服务HTTP配置一个HTTP服务,输入地址…

设计模式 - 行为型 - 模板模式学习

现象: 设计模式 - 行为型 - 模板模式学习 介绍: 模板模式的设计思路,在抽象类中定义抽象方法的执行顺序, 并将抽象方法设定为只有子类实现,但不提供独立访问的方法 只能通过已经被安排好的定义方法去执行 可以控制整…

如何快速生成数据字典SQL语句

如何快速生成数据字典SQL语句 一、首先我们找到需要生成的数据字典的国家标准 以民族数据字典为例 打开浏览器搜索民族字典代码表得到如下数据,并把得到的数据存入Excel表格中 国标民族数据字典 国标民族字典 第七次全国人口普查民族代码表与民族国标代码 第七次…

JVM垃圾回收之GCRoots可达性分析

已经死亡的对象,不可达的对象,肯定会被回收。 什么样的对象会被回收? 判定的算法有两种:引用计数法和可达性分析算法。 引用计数法:(不使用这种) 给对象中添加一个引用计数器,每当…

springboot项目打jar包发布上线、查看日志和进程号

目录前言一、Maven打包1.1 删除test文件和对应依赖(不建议)1.2 pom.xml中配置跳过测试1.3 使用idea打包1.4 使用maven命令打包二、启动jar包2.1 简单启动2.2 后台运行并打印日志2.3 脚本启动三、查看日志3.1 tail命令查看日志3.2 cat命令查看日志四、其他…

员工为什么对绩效考核不满意?管理者应该怎么做?

绩效考核是公司管理员工的重要工具,员工通过绩效考核可以衡量自己的工作效果和完成任务的能力,能够帮助管理者更好的了解员工的工作情况和绩效表现。 但是,现实中很多员工对绩效考核“不满意”,认为绩效考核不公正、不透明、不准确…

docker基础命令-阳哥

docker基础篇-阳哥 文章目录docker基础篇-阳哥centos7最小安装准备工作网络设置安装必备工具1.1 安装工具1.5 优化ssh连接1.1 修改ssh服务的配置文件1.2 找到对应的行数修改如下1.3 修改完成之后重启ssh服务1.6 永久修改主机名sed命令sed命令替换文本_xbd_zc的博客-CSDN博客1.镜…

《2023年化妆品原料成分趋势报告》| 解码化妆品备案数据,洞悉2023年潜力原料成分

回顾2022年,是中国化妆品行业“历史转折年”。备案制度的全面改革,直接改变了产品备案新格局。法律法规对新品备案提出了详实的要求,新品出炉也设置了更高的门槛,所以我们清晰地看到2022年整体的化妆品备案数据大幅度下滑&#xf…

精心梳理的11个在线常用工具,提高开发效率

1、Hutool工具类——Java开发常用工具类 参考文档:https://hutool.cn/docs/index.html#/ 2、在线工具——各种工具整合 我主要用于时间戳转换,进制转换等。 地址:https://tool.lu/ 3、蛙蛙工具——各种文本字符等整合工具 https://www…

python@pyside样式化

文章目录refWidget类创建样式化文件qss引用样式并启动应用ref Styling the Widgets Application - Qt for PythonQt Style Sheets Reference | Qt Widgets 5.15.12 Widget类创建 创建一个简单界面(菜单主要内容)它们是水平布局 主要内容包括一段文本和一个按钮,它们是垂直布…

AI大模型,驶向产业何方?

技术更迭,已不是壁垒,国产式AI需要的是产品的创新思维,以及对需求的产品变现能力。 作者|斗斗 出品|产业家 “AI炒了那么多年,第一次感觉它真的要来了。”国内某论坛中,带有ChatGPT的词条下,几乎都会出…

【Java开发】设计模式 01:单例模式

1 单例模式介绍单例模式(Singleton Pattern)是Java中最为基础的设计模式。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对…

打怪升级之使用csv文件发送UDP数据

面临的困难 如果你想做一个基于UDP包的数据处理问题的话,比较好的办法是使用csv文件来进行数据的保存(csv文件比较简单,方便进行各种处理)。 CSV文件格式简单,一方面它可以直接被excel处理,另一方面它完全…

PDF转word在线转换方法!操作简单又高效

相信很多已经工作的人都知道,PDF文件格式的优点在于兼容性强、安全性高,而且查看和传输给他人都很方便。但是,这种格式的文件也有不太方便的地方,那就是不能对文件内容进行编辑和修改。对于许多人来说,如果想要编辑修改…

接口自动化神器推荐:免费开源Lim接口测试平台

前言 对于传统的实现接口自动化的方案往往是搭建自动化框架,通过excel编写用例来驱动执行,例如常见的万金油技术栈组合:excel(编写用例)、pytest(用例执行)、allure(测试报告)等。 很多公司往往是通过自动化框架而非…