JavaScript 中具有相同地址的对象变量是否始终相同?

Are object variables with the same address always identical in JavaScript?

这个问题看起来有点傻,但我只是想确认一下我的理解。

  1. 我正在学习 JavaScript 中的比较,在我看来,如果两个对象具有相同的地址,那么它们绝对应该相等(b/c 基本上它们是一?)。这总是正确的吗?

  2. 奖金问题:如果我确实想实现这个地址比较(浅比较),我可以在没有 Object.is=== 的情况下在纯 JS 中完成吗?

两个物体不能占据相同的位置,无论是在我们的物理宇宙中还是在扭曲的 javascript 宇宙中。您可以拥有两个对象,其值是对同一内存位置的引用。

var x = [1, 2, 3]
var y = x

因此,数组 [1, 2, 3] 可能存储在某个内存地址中,假设它从 00A4 开始。变量 x 将存储在内存中的某个不同位置,比如 0108,存储在该位置的实际值是数字 00A4,表示其引用值的内存位置。现在,y 将存储在另一个完全不同的内存位置,比方说 020F,它的值也将是 00A4,它的引用值的内存位置。

  1. x和y都是变量,其值是引用,最终指向同一个地址。指向同一地址的参考值在比较时总是相等的。

  2. Javascript 没有像这样的任何 low-level 语义来操纵内存地址。你可以通过使用 c 过程调用或其他东西来做到这一点。