SOURCE

// 浅克隆:
function clone(obj) {
    const cloneObj = obj;
    Object.keys(obj).forEach(key => {
        cloneObj[key] = obj[key];
    });
    return cloneObj
}
console.log(clone({"a": "A","b":"B"}));

// 深克隆
// 考虑基础类型
// 引用类型
// RegExp、Date、函数 不是 JSON 安全的
// 会丢失 constructor,所有的构造函数都指向 Object
// 破解循环引用
function deepClone(obj) {
  if (typeof obj === 'object') {
    var result = obj.constructor === Array ? [] : {};
    for (var i in obj) {
      result[i] = typeof obj[i] === 'object' ? deepCopy(obj[i]) : obj[i];
    }
  } else {
    var result = obj;
  }
  
  return result;
}

console.log(typeof NaN === 'number');


// 简单的反转链表
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
let reverseListSimple =  (head) => {
    if (!head) return null;
    let pre = null, cur = head;
    while (cur) {
        console.log(cur);
        // 关键: 保存下一个节点的值
        let next = cur.next;
        cur.next = pre;
        pre = cur;
        cur = next;
    }
    return pre;
};
console.log(reverseListSimple([1,2,3,4,5]));
reverseListSimple(1)
reverseListSimple(2)
reverseListSimple(3)
reverseListSimple(4)
reverseListSimple(5)

let reverseList = (head) =>{
  let reverse = (pre, cur) => {
    if(!cur) return pre;
    // 保存 next 节点
    let next = cur.next;
    cur.next = pre;
    return reverse(cur, next);
  }
  return reverse(null, head);
}
console.log(reverseList([1,2,3,4,5]));
console 命令行工具 X clear

                    
>
console