<分区>
我是 Javascript 的初学者,只需要一些说明。我并不是真的想在这里取得任何特别的成就。只是对这种情况有点困惑。
当分配给对象的变量作为参数传递给函数时,我们可以永久改变对象。但是,我们不能重新分配它并使更改生效。这是为什么?
下面是我的意思的一些示例代码:
示例 1 - 突变。
const house = {
color1: 'white',
color2: 'blue'
};
let paintIt = obj => {
obj.color1 = 'gold'
};
paintIt(house);
house.color1 // Returns 'gold'
示例 2 - 重新分配。
let house = {
color1: 'white',
color2: 'blue'
};
let paintItReassignment = obj => {
obj = {
forSale : false,
includesGarden : true
}
console.log(obj) // Prints {'forSale':false, 'includesGarden':true}
};
paintItReassigment(house) // The reassignment does not work
house // Still returns {color1:'white', color2:'blue'}
house = {
forSale : false,
includesGarden : true
}; // Regular reassignment still works
为什么当您修改对象属性时它会卡住(示例 1),而当您重新分配它时(示例 2)则不会?