亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JS新手求解,下面代碼為什么ab的引用次數都是2 不是1么?

JS新手求解,下面代碼為什么ab的引用次數都是2 不是1么?

森林海 2019-04-19 19:15:27
function fn() {var a = {};var b = {};a.pro = b;b.pro = a;}fn();
查看完整描述

4 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

因為要回復的內容比較多,所以我重新回答了一次。

紅寶石原文:引用計數的含義是跟蹤記錄每個值被引用的次數。


引用次數計算:

①當聲明一個變量并將一個引用類型賦值該變量時,引用次數為1;

②如果同一個值又被賦給另一個變量,則該值的引用次數+1。

③如果包含對該值引用的變量又取得另一個值,則該值的引用次數-1。



那么結合這個理論,變量a被創建并賦值(var a={})引用次數為1;

那么當b.pro=a;引用次數+1;

所以a的引用次數是2;

對于變量b也是同理。

查看完整回答
反對 回復 2019-05-13
?
九州編程

TA貢獻1785條經驗 獲得超4個贊

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


查看完整回答
反對 回復 2019-05-13
?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

每一行都同時被引用了一次,你就理解為,你寫了幾次就引用了幾次

查看完整回答
反對 回復 2019-05-13
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

題主表達的內容并不明確。按照樓上的說法應該是ab各被引用了一次。不清楚樓主在哪里看的引用了兩次。

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

上面這樣的寫法其實是循環引用,即對象a中的屬性指向了對象b,對象b中的屬性指向了對象a。
如果層主還有什么其他疑惑,可以說出來。


查看完整回答
反對 回復 2019-05-13
  • 4 回答
  • 0 關注
  • 581 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號