# let 关键字
1、变量不能重复声明(Var可以重复声明,后声明的覆盖)
2、块级作用域 (只在代码块里起作用)
3、不存在变量提升(与var的主要区别,先声明再使用)
4、不影响作用域链
# const 关键字
1、一定要赋初始值
2、一般常量使用大写
3、常量的值不能修改
4、块级作用域
5、对于数组和对象的元素修改,不算作对常量的修改,不会报错
# 解构赋值
解构数组、解构对象
# 模板字符串
1、内容中可以直接出现换行符
2、方便变量拼接
# 简化对象写法
对象属性名和属性值一样时可以不写属性值
# 箭头函数
1、this 是静态的,始终指向函数声明时所在的作用域下的 this 的值
2、不能作为构造函数实例化对象
3、不能使用 arguments 变量
4、箭头函数的简写(形参只有一个,执行语句只有一条)
5、箭头函数适用于与 this 无关的回调,比如定时器,数组的方法的回调
# 函数形参赋初始值(默认值)
可以配合结构赋值使用
# rest 剩余参数(...args)
1、在 ES5 获取实参的方式是通过 arguments 变量(对象形式)
2、rest 参数必须放到参数的最后
3、得到的实参是数组形式,区别于 arguments(伪数组)
# 拓展运算符
1、可用于数组的合并
2、数组的克隆(浅拷贝)
3、将伪数组转换为真正的数组
# Symbol 类型
给对象添加独一无二的属性和方法
# 迭代器 (Iterator)
1、 for of 能够遍历数组的原理,创建一个 symbol 对象,调用 next 方法返回值
2、迭代器的应用:自定义遍历数组
# 生成器
1、本质是一个特殊的函数
2、function * fn(){}
3、yield 修饰
4、通过.next 方法返回