首页 > 解决方案 > 在 JavaScript 中读取/分配引用类型

问题描述

喜欢认为我拥有并理解引用类型,但我想知道我在这里缺少什么,引擎盖下发生了什么。

let o = {
   foo: 'bar'
};

console.log(o) // logs the object.

let p = o; // assigns reference to object

我已经看过一千遍了,然后不假思索地继续前进,但这一次却给了我意想不到的迷幻震撼

在这两种情况下,我的大脑都将其解读为“读取 o 和”的值。但是,一个将记录存储的实际数据,而另一个将返回一个引用。我错过了什么使这两行不同的步骤?

“当 x JavaScript 将 z”

有人可以解释它的工作原理,以便我了解它的确切原因吗?

标签: javascriptecmascript-6computer-science

解决方案


如果复制值,则复制对对象的引用。

如果你用它做任何其他事情,那么就会遵循引用并使用对象。


的值o是对对象的引用。

如果您分配op然后您复制该引用并且p也是对对象的引用。

如果您访问o.foo,那么您遵循对对象的引用并使用它的foo属性做一些事情。

如果传递o给函数,则将引用复制到函数中的参数。如果该函数随后访问,paramater.foo则它遵循对对象的引用并使用其上的值执行某些foo操作。


推荐阅读