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一次?