如何在javascript中比较两个变量是否引用同一个对象

问题描述 投票:0回答:1

我是 JavaScript 新手,正在接触展开运算符。 据我所知,它将深层复制数组或对象的顶级元素,但浅层复制嵌套数组或对象。 我想看到它的动作,因此看到下面的代码,但无法根据我的理解获得所需的输出。

const originalObject = {
  name: 'Alice',
  address: {
    street: '123 Main St',
    city: 'Anytown',
  },
};

const copiedObject = { ...originalObject };

console.log(copiedObject.name === originalObject.name); // Expected Output: false but Outputs: true

originalObject.address.city = 'Newtown';

console.log(copiedObject.address.city); // Output: "Newtown" (modification affects both objects)
console.log(originalObject.address.city);

console.log(copiedObject.address === originalObject.address); // Output: true (Can we understand this means both has a reference to the same object?)

它不应该输出 false 吗? console.log(copiedObject.name === originalObject.name);

有人可以用更简单的术语解释一下如何在代码中可视化它,并比较两个属性是否在 javascript 中共享相同的引用?

我在 stackoverflow 上遇到过类似问题,但找不到答案:

  1. 如何检查两个变量是否具有相同的引用?
  2. 如何在javascript中比较两个变量
  3. 比较两个变量是否在javascript中引用同一个对象
javascript reactjs ecmascript-6 reference
1个回答
0
投票

原语总是按值比较,对象(包括数组和函数)总是按引用比较

© www.soinside.com 2019 - 2024. All rights reserved.