【发布时间】:2020-09-13 00:24:07
【问题描述】:
我是 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
为什么当你修改对象属性(example1)时它会粘住,而当你重新分配它时(example2)却没有?
【问题讨论】:
标签: javascript function object