我正在做一個leetcode問題反向單鏈表。我嘗試了下面的代碼,看看我是否錯過了第1位的代碼,結果會出錯。我理解這是因為它失去了對它的引用current.next。(感謝這個stackoverflow帖子。)function ListNode(val) {
this.val = val;
this.next = null;}/**
* @param {ListNode} head
* @return {ListNode}
*/var reverseList = function(head) {
let current = head;
let prev = null;
while (current) {
current.next = prev;
prev = current;
current = current.next;
//The right one
// let save = current.next; //1
// current.next = prev;
// prev = current;
// current = save;
}
return prev};問題是,我發現下面顯示的另一個代碼也可以通過使用數組解構賦值(名稱可能正確嗎?),但我無法理解為什么這個工作沒有使用另一個變量來保存引用current.next。var reverseList = function(head) {
let current = head;
let prev = null;
while (current) {
[current.next, prev, current] = [prev, current, current.next];//2
}
return prev};那么第2位的代碼如何實際工作而不使用另一個變量來保存對current.next?的引用?
為什么這個JS解構賦值方法適用于反向單鏈表?
大話西游666
2019-04-16 13:15:56