有人可以解释下面的突变行为吗:
function test () {
let data = {}
const run = () => {
console.log(data)
}
const update = () => {
data = {}
}
return {
container: {
data
},
run,
update
};
}
const { container, run, update } = test();
update(); // run an update to reset value to {}
container.data.test = { result: 'test' }; // try to mutate the data
run(); // it will still return {} instead { data: {test: {result: 'test'}} }
我希望更新对象会导致函数内部的数据对象发生变异。但看起来情况并非如此,就好像它创建了一个新对象一样。