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
/*清空控制台信息*/function clearConsole() {console.clear();let fontFamily = "微软雅黑";let fontSize = 40;let fontWeight = "bold";let backgroundColor = "green";console.log("%c有...