同一个对象不总是一样的吗?

The same object is not always the same?

为什么b is not equalnull在下面的代码末尾?

var a = { property: "value" }, 
    b = a;
console.log(a === b); // true

a = null;
console.log(b); // Object { property: "value" }

我认为 ab 是绑定到一个对象的两个引用,因此都将成为 null

行中:

a = 5;

您正在将 'a' 指向一个包含整数值 5 的新内存块,覆盖它之前对您最初创建的对象的引用。试试这个:

var a = { property: "value" }, 
b = a;
console.log(a === b); // true

a.property = 5;
console.log(b); // Object {property: 5}

这样您就不会覆盖 a,而是将键 property 指向的内存块从具有值 "value" 的字符串更改为具有值的整数5.

这会保留 a 对包含您最初创建的对象的内存块的引用,您还在下一行中设置 'b' 指向该对象。

编辑:以上是回答你之前的问题。如果将 a 设置为 null,它只会删除它对原始对象的引用。当任何对象(在本例中为 b)仍然引用它时,该对象将不会被垃圾回收。创建b后,引用是独立的,但两者恰好指向同一块内存。