JS新手求解,下面代码为什么ab的引用次数都是2 不是1么?

function fn() {
var a = {};
var b = {};
a.pro = b;
b.pro = a;
}

fn();

因为要回复的内容比较多,所以我重新回答了一次。

红宝石原文:引用计数的含义是跟踪记录每个值被引用的次数。


引用次数计算:

①当声明一个变量并将一个引用类型赋值该变量时,引用次数为1;

②如果同一个值又被赋给另一个变量,则该值的引用次数+1。

③如果包含对该值引用的变量又取得另一个值,则该值的引用次数-1。



那么结合这个理论,变量a被创建并赋值(var a={})引用次数为1;

那么当b.pro=a;引用次数+1;

所以a的引用次数是2;

对于变量b也是同理。

a.pro = b 每一个被引用一次,下一行同理,几个地方用它了,就被引用了几次

题主表达的内容并不明确。按照楼上的说法应该是ab各被引用了一次。不清楚楼主在哪里看的引用了两次。

a.pro = b;
b.pro = a;

上面这样的写法其实是循环引用,即对象a中的属性指向了对象b,对象b中的属性指向了对象a。
如果层主还有什么其他疑惑,可以说出来。

这是什么鬼,定义a一次?赋值a一次?