输出什么?
const value = { number: 10 };
const multiply = (x = { ...value }) => {
console.log(x.number *= 2);
};
multiply();
multiply();
multiply(value);
multiply(value);
A: 20, 40, 80, 160
B: 20, 40, 20, 40
C: 20, 20, 20, 40
D: NaN, NaN, 20, 40
参数为空 x拿的是 解构value赋值, 参数为value ,x 指向 value 地址,所以选C
在看一个例子
function test(obj) {
obj.b = 2
}
let obj = {
a:1
}
test(obj)
console.log(obj)//{ a: 1, b: 2 }
可以看到他还是改变到原始obj的值,我们对比可以发现,
针对于简单类型的数据,传进的是值的复制,
针对于复制类型的数据,传进的是值的引用,如果在函数里面改变了他的属性,对应的,原始值也会发生改变