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类型的变量被赋值(复制)给其他变量后,修改被赋值(复制)的新变量的值,会影响原始变量的值,这是为什么呢?相关推荐

  1. oracle的int范围,oracle中int类型和number类型区别

    oracle中int类型和number类型区别 INT类型是NUMBER类型的子类型. 下面简要说明: (1)NUMBER(P,S) 该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节 ...

  2. java long 对应mybati类型_修改 mybatis-generator 中数据库类型和 Java 类型的映射关系...

    使用 mybatis-generator 发现数据库类型是 tinyint(4) , 生成 model 时字段类型是 Byte ,使用的时候有点不便 数据库的类型和 Model 中 Java 类型的关 ...

  3. 数据库中id类型和varchar类型的区别

    区别 id是唯一标识符 varchar是一种数据类型

  4. 修改 mybatis-generator 中数据库类型和 Java 类型的映射关系

    为什么80%的码农都做不了架构师?>>> public class MyJavaTypeResolverDefaultImpl extends JavaTypeResolverDef ...

  5. [转载] Python中int类型和string类型的相互转换

    参考链接: Python类型转换和类型转换 1.字符串转换成int a = '10' int(a) //十进制string转化为int, 10int(a, 16) //十六进制string转化为int ...

  6. android float类型保留两位小数_你知道MySQL中Decimal类型和Float Double的区别吗?

    出处:cnblogs.com/panchanggui/p/10766607.html MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,flo ...

  7. 数据库中的字段varchar类型和char类型的区别?

    数据库中的字段varchar类型和char类型的区别? 目录 数据库中的字段varchar类型和char类型的区别?

  8. Python中float类型、float32类型和float64类型的表示精度,所需内存及其之间的转换

    1. 表示精度和所需内存 float类型和float64类型是一样的,都需要64个bits,而float32需要32个bits. 精度方面,float类型和float64类型在十进制中可以有16位,而 ...

  9. decimal类型对象里面定义什么类型_MySQL中Decimal类型和Float Double的区别(详解)

    MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...

最新文章

  1. matlab gui 中指定axes窗口画进度条
  2. 当你遇到modifying layer that is being finalized的时候怎么办?
  3. 提高github访问速度(深入研究底层网络通信、域名解析等原理)
  4. vonic 环境配置_Vonic 2.0 全新文档站上线
  5. jedis访问redis学习笔记
  6. 在linux上運行小火車
  7. Atitit 直播问题总结ffmpeg 目录 1.1. 屏幕太大,可以使用-s调整分辨率 1 1.2. Full size 1 1.3. 流畅度调整 1 2. 1 2.1. 没有录音 1 2.2.
  8. html中点重置和提交没反应,网页点提交按钮没反应 js提交表单,点击按钮无反应...
  9. 虚拟机ipv4和6都没访问权限_无线网络连接 ipv4/6都无网络访问权限该怎么解决
  10. 不知道吧?未加工的食物可以帮助你减肥
  11. 每天接触互联网 了解互联网是什么
  12. python 利用opencv实现颜色检测
  13. 第二语言教学的5c标准是哪5c,【英语教学论文】5C标准对大学英语教育的启示探讨(共3451字)...
  14. Matlab似然函数
  15. 大学计算机基础感兴趣的知识点,大学计算机基础课程改革和实施.doc
  16. 睡眠好坏 枕头是关键!
  17. 面试之Spring的启动原理
  18. OA与BPM究竟有啥区别
  19. 【Matlab】海底声学模拟(Bellhop)以及滤波器的设计
  20. 系统集成项目管理工程师报考条件

热门文章

  1. Linux环境kafka安装
  2. 修改jenkins启动的默认用户
  3. 数组--存储地址的计算
  4. 2022-2028年中国渣油行业市场研究及前瞻分析报告
  5. sklearn FutureWarning: numpy not_equal will not check..., The comparison did not return the same
  6. MySQL 学习笔记(9)— 事务控制语句、事务属性以及并发和隔离级别
  7. wcf客户端捕获异常
  8. C# 在用户控件中添加自定义事件
  9. linux下遇到的小问题与解决方法
  10. USACO Barn Repair