gpt4 book ai didi

javascript - 为什么传递给函数的对象可以改变但不能在 javascript 中重新分配?

转载 作者:行者123 更新时间:2023-12-05 06:11:43 24 4
gpt4 key购买 nike

<分区>

我是 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)则不会?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com