var,let,const
var:
var定义的变量可以修改,如果不初始化会输出undefined,不会报错。可以变量提升。
let:
是块级作用域,函数内部使用let定义后,对函数外部无影响。
const:
const定义的变量不可以修改,而且必须初始化,当定义了对象时,则为绑定了对象的地址,地址不可更改。
作用域链:
决定了变量的访问权限,环境变量可以一级一级地向上追溯, 可以访问它的上级环境(变量或函数),注意是一级一级地追溯的。
垃圾收集方法:
- 标记方法
- 引用计数法
浅拷贝和深拷贝
浅拷贝实现方法:
- for in 遍历一个一个复制
- Object.assign(a,b)将b复制到a
深拷贝实现方法:
- 一个一个手动复制
- 若对象只有一层时,使用Object.assign()可以实现深拷贝。
- 转成Jason再转回来
- 递归拷贝