问题遇到的现象和发生背景
函数内的let变量被赋值问题
问题相关代码,请勿粘贴截图
const j = [1, 2, 3, 4]
function aa() {
let i = j
i.splice(0, 1)
}
aa()
console.log(j);
运行结果及报错内容
[2,3,4]
我的解答思路和尝试过的方法
j是赋值使用的常量为什么也会被splice啊
函数内的let变量被赋值问题
const j = [1, 2, 3, 4]
function aa() {
let i = j
i.splice(0, 1)
}
aa()
console.log(j);
[2,3,4]
j是赋值使用的常量为什么也会被splice啊
把j这种方法赋值是浅拷贝,i和j都指向[1, 2, 3, 4]的位置,修改的是同一条数据,参考一下深浅拷贝
JS之深浅拷贝_阳光、男孩-CSDN博客_js深浅拷贝
1.深拷贝与浅拷贝的区别如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那就是深拷贝,自食其力。2.栈堆、基本数据类型、引用数据类型 栈堆:存放数据的地方 基本数据类型:number,string,boolean,null,undefined. 引用数据类型(Object...
https://blog.csdn.net/qq_28332601/article/details/82746184
如果不想被改变,可以利用解构赋值
let i = [...j]
对你有用的话,请点击一下【采纳此答案】,谢谢🌹