gpt4 book ai didi

javascript - 如果JavaScript对象是通过引用传递的,为什么更新属性值不会更新局部变量

转载 作者:行者123 更新时间:2023-11-28 13:41:51 25 4
gpt4 key购买 nike

对象通过引用传递。它们永远不会被复制。

我有一个代码段如下:

var person = { firstname: 'John', lastname: 'Smith' }
var anotherPerson = person

anotherPerson.nickname = 'Curly'
console.log(person.nickname)
// "Curly"

var fname=person.firstname
console.log(fname)
// "John"

person.firstname = 'Tom'
console.log(anotherPerson)
// Object { firstname: "Tom", lastname: "Smith", nickname: "Curly" }

console.log(fname)
// "John" <-- fname is not updated

我的问题是在我更新了对象人的firstname之后至Tom ,为什么局部变量fname还没更新吗?

最佳答案

Javascript 中的值永远不会通过引用传递,而是通过值传递。这些值本身就是对象的引用。

如果您认为函数接收person,那么即使对象也是按值传递的,这一事实应该很清楚。由于参数只能更改其内容,因此无法替换 person 的整个值多变的。 fname 也是如此。 ,附加限制是字符串是不可变的,这意味着函数接收 fname 的值变量根本无法改变这个变量。

关于javascript - 如果JavaScript对象是通过引用传递的,为什么更新属性值不会更新局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17352430/

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