var,let,const
作用域链,垃圾收集
浅拷贝和深拷贝

var,let,const

var:

var定义的变量可以修改,如果不初始化会输出undefined,不会报错。可以变量提升。

let:

是块级作用域,函数内部使用let定义后,对函数外部无影响。

const:

const定义的变量不可以修改,而且必须初始化,当定义了对象时,则为绑定了对象的地址,地址不可更改。

作用域链:

决定了变量的访问权限,环境变量可以一级一级地向上追溯, 可以访问它的上级环境(变量或函数),注意是一级一级地追溯的。

垃圾收集方法:

  1. 标记方法
  2. 引用计数法

浅拷贝和深拷贝

浅拷贝实现方法:

  1. for in 遍历一个一个复制
  2. Object.assign(a,b)将b复制到a

深拷贝实现方法:

  1. 一个一个手动复制
  2. 若对象只有一层时,使用Object.assign()可以实现深拷贝。
  3. 转成Jason再转回来
  4. 递归拷贝