js中Object类型和Array类型的变量被赋值(复制)给其他变量后,修改被赋值(复制)的新变量的值,会影响原始变量的值,这是为什么呢?
JavaScript中的Object和Array都是指针变量类型,例如我声明
let obj={a:1};let arr=[1,2,3];
其中的obj和arr存放的仅仅是对应的对象和数组内容所存放的内存地址值
当你用以下代码赋值给另外的新变量的时候
let obj={a:1};let arr=[1,2,3];let obj_new=obj;let arr_new=arr;
我们对 obj_new 和 arr_new 的内容进行修改,原始的 obj 和 arr 变量的值也会发生变化
我擦!还能说人话吗?
好啦,我来用通俗易懂的类比
你给翻译翻译,什么是TM的指针变量?
强哥,你给翻译翻译,什么TM的叫做TM的指针变量?
举个例子:
如果“强哥”是一个指针变量 ,无论出现在哪里,你看到的只是“强哥”这两个中文汉字,就如同一个别名。
当我们说“阿强”就是“强哥”,等同于把"强哥“赋值给了“阿强”。
如果后面强哥变胖了,那么阿强也变胖了。
如果后面阿强变瘦了,那么强哥也变瘦了。
也就是指针变量类似引用了一个实际客观载体,就是一个别称,当我们把这个别称赋给任何另外的别称的时候,原有别称所指代的内容发生变化,新别称所指代的内容也会对应发生变化,就像量子纠缠一样。
我不知道这样的解释能够理解吗,如还不能理解欢迎留言。我继续思考如何讲的更加浅显易懂。
那么问题来了
如何取消这种修改值后,关联数据变化呢???
请听下回分解 JS如何深度复制对象和数组,避免指针变量引用修改值_你挚爱的强哥❤给你发来1条消息❤-CSDN博客//自定义深度复制对象or数组let copyObjOrArr = o => { let isArray = o instanceof Array; let isObject = o instanceof Object; if (!isObject) return o; let n = (isArray ? [] : {}); for (let k in o) n[k] = copyObjOrArr(o[k]); return n.https://s-z-q.blog.csdn.net/article/details/121153910
js中Object类型和Array类型的变量被赋值(复制)给其他变量后,修改被赋值(复制)的新变量的值,会影响原始变量的值,这是为什么呢?相关推荐
- oracle的int范围,oracle中int类型和number类型区别
oracle中int类型和number类型区别 INT类型是NUMBER类型的子类型. 下面简要说明: (1)NUMBER(P,S) 该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节 ...
- java long 对应mybati类型_修改 mybatis-generator 中数据库类型和 Java 类型的映射关系...
使用 mybatis-generator 发现数据库类型是 tinyint(4) , 生成 model 时字段类型是 Byte ,使用的时候有点不便 数据库的类型和 Model 中 Java 类型的关 ...
- 数据库中id类型和varchar类型的区别
区别 id是唯一标识符 varchar是一种数据类型
- 修改 mybatis-generator 中数据库类型和 Java 类型的映射关系
为什么80%的码农都做不了架构师?>>> public class MyJavaTypeResolverDefaultImpl extends JavaTypeResolverDef ...
- [转载] Python中int类型和string类型的相互转换
参考链接: Python类型转换和类型转换 1.字符串转换成int a = '10' int(a) //十进制string转化为int, 10int(a, 16) //十六进制string转化为int ...
- android float类型保留两位小数_你知道MySQL中Decimal类型和Float Double的区别吗?
出处:cnblogs.com/panchanggui/p/10766607.html MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,flo ...
- 数据库中的字段varchar类型和char类型的区别?
数据库中的字段varchar类型和char类型的区别? 目录 数据库中的字段varchar类型和char类型的区别?
- Python中float类型、float32类型和float64类型的表示精度,所需内存及其之间的转换
1. 表示精度和所需内存 float类型和float64类型是一样的,都需要64个bits,而float32需要32个bits. 精度方面,float类型和float64类型在十进制中可以有16位,而 ...
- decimal类型对象里面定义什么类型_MySQL中Decimal类型和Float Double的区别(详解)
MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...
最新文章
- matlab gui 中指定axes窗口画进度条
- 当你遇到modifying layer that is being finalized的时候怎么办?
- 提高github访问速度(深入研究底层网络通信、域名解析等原理)
- vonic 环境配置_Vonic 2.0 全新文档站上线
- jedis访问redis学习笔记
- 在linux上運行小火車
- Atitit 直播问题总结ffmpeg 目录 1.1. 屏幕太大,可以使用-s调整分辨率	1 1.2. Full size	1 1.3. 流畅度调整	1 2. 	1 2.1. 没有录音	1 2.2.
- html中点重置和提交没反应,网页点提交按钮没反应 js提交表单,点击按钮无反应...
- 虚拟机ipv4和6都没访问权限_无线网络连接 ipv4/6都无网络访问权限该怎么解决
- 不知道吧?未加工的食物可以帮助你减肥
- 每天接触互联网 了解互联网是什么
- python 利用opencv实现颜色检测
- 第二语言教学的5c标准是哪5c,【英语教学论文】5C标准对大学英语教育的启示探讨(共3451字)...
- Matlab似然函数
- 大学计算机基础感兴趣的知识点,大学计算机基础课程改革和实施.doc
- 睡眠好坏 枕头是关键!
- 面试之Spring的启动原理
- OA与BPM究竟有啥区别
- 【Matlab】海底声学模拟(Bellhop)以及滤波器的设计
- 系统集成项目管理工程师报考条件
热门文章
- Linux环境kafka安装
- 修改jenkins启动的默认用户
- 数组--存储地址的计算
- 2022-2028年中国渣油行业市场研究及前瞻分析报告
- sklearn FutureWarning: numpy not_equal will not check..., The comparison did not return the same
- MySQL 学习笔记(9)— 事务控制语句、事务属性以及并发和隔离级别
- wcf客户端捕获异常
- C# 在用户控件中添加自定义事件
- linux下遇到的小问题与解决方法
- USACO Barn Repair