鍍金池/ 問答/人工智能  HTML/ JavaScript鏈表指針問題?

JavaScript鏈表指針問題?

源自一個(gè)問題:
輸入兩個(gè)單調(diào)遞增的鏈表,輸出兩個(gè)鏈表合成后的鏈表,當(dāng)然我們需要合成后的鏈表滿足單調(diào)不減規(guī)則。
解決代碼:

/*function ListNode(x){
????this.val = x;
????this.next = null;
}*/
function Merge(pHead1, pHead2){
????if(!pHead1){
????????return pHead2 ? pHead2 : null
????} else if(!pHead2){
????????return pHead1;
????}
????// debugger;
????var curr1 = pHead1;
????var curr2 = pHead2;
????var result = new ListNode(-1);
????var curr = result;
????while(curr1 && curr2){
????????if(curr1.val < curr2.val){
????????????curr.next = curr1;
????????????curr1 = curr1.next;
????????} else{
????????????curr.next = curr2;
????????????curr2 = curr2.next;
????????}
????????curr = curr.next;
????}
????if(curr1){
????????curr.next = curr1;
????}
????if(curr2){
????????curr.next = curr2;
????}
????//防止內(nèi)存泄露
????curr = result.next;
????result.next = null;
????result = curr;
????curr = curr1 = curr2 = null;
????return result;
}

這個(gè)防止內(nèi)存泄露的代碼沒有看懂
curr = result.next之后curr是指向了result.next的地址吧,還是復(fù)制了一份?
引用類型因該是指向地址吧?
那么result.next = null之后curr也變成null了吧??
為什么還可以result=curr,最后返回result

回答
編輯回答
女流氓

如果 result.next 指向一個(gè)對(duì)象
執(zhí)行 curr = result.next;
這時(shí) curr 和 result.next 將指向同一個(gè)對(duì)象
執(zhí)行 result.next = null;
將 result.next 指向null,但對(duì)象不會(huì)被垃圾回收,因?yàn)檫€有一個(gè)curr變量指向該對(duì)象
執(zhí)行 result = curr;
將 result 指向?qū)ο蟆?br>你可以學(xué)習(xí)下垃圾回收與對(duì)象引用

2017年5月1日 10:59