我正在尝试从函数内部声明的数组中添加/删除元素。我已经能够添加或删除和访问更新的数组。
为了访问数组,我使用了两种不同的方法。
创建了一个返回数组的内部函数。
已从主函数返回数组并使用点表示法访问相同的数组。
这是我的代码:
function test() {
let myArr = [];
const getMyArr = () => myArr;
const add = n => {
myArr.push(n);
return () => {
myArr = myArr.filter(a => a !== n);
};
};
return {
myArr,
getMyArr,
add
};
}
let myTestRun = test();
let remove3 = myTestRun.add(3);
let remove7 = myTestRun.add(7);
let remove8 = myTestRun.add(8);
console.log("myArr after insertion", myTestRun.myArr);
console.log("getMyArr() after insertion", myTestRun.getMyArr());
remove7();
console.log("myArr after removing", myTestRun.myArr); //still returns the old array without any modifications
console.log("getMyArr() after removing", myTestRun.getMyArr()); //returns the modified array. how? Why didn't it work before?
我不明白的是为什么没有myArr任何修改以及getMyArr()函数如何返回更新后的值。我曾经相信两者都myArr指向同一个对象。因此,对 的任何修改myArr都应通过这两种方法反映出来。为什么我错了。这种不同的返回值背后的原因是什么?请解释。
LEATH
眼眸繁星
相关分类