YuM*_*Mei 0 javascript object pass-by-reference
对象通过引用传递。它们永远不会被复制。我有如下代码段:
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
Run Code Online (Sandbox Code Playgroud)
我的问题是在我将对象人的名字更新为“Tom”之后,为什么本地变量 fname 没有更新?
javascript 中的值从不通过引用传递,始终通过值传递。这些值本身就是对象的引用。
如果您认为person
作为参数接收的函数只能更改其内容,而不能替换person
变量的整个值,那么即使对象是按值传递的事实也应该很清楚。对于fname
来说也是如此,附加限制是字符串是不可变的,这意味着接收fname
变量值的函数根本无法更改此变量。
归档时间: |
|
查看次数: |
3838 次 |
最近记录: |