- Let 和const
(1)var有变量提升
有覆盖性
(2)Let 声明变量没有变量提升
是一个块级作用域
Let不能重复声明
不会污染全局变量
(3)const 声明的是一个常量 一旦赋值 无法修改
没有变量提升
是一个块级作用域
Const 不能重复声明
作用1:for循环是个经典例子 解决了var带来的提升问题
作用2:不会污染全局变量
2.模板字符串
总结:模板字符串:使用tab键上面的反引号``,插入变量时使用${变量名}
3.函数
(1)带参数默认值的函数
ES5中如果函数没有实参:
ES6中带参数默认值的函数:
(2) 默认的表达式也可以是一个参函数
(3) 剩余参数:由三个点...和一个紧跟着的具名参数指定 ...keys
剩余参数(...key)解决了arguments 的问题
ES5
ES6
(4) 扩展运算符。。。
剩余运算符:把多个独立的合并到一个数组中
扩展运算符:将一个数组分割,并将个个项作为分离的参数传给函数
展开运算符不能展开对象
(5) 箭头函数
使用=>来定义 function(){}等于与() =()=》{}
4.箭头函数的this指向(没有this绑定)
箭头函数没有this指向,箭头函数内部this值只能通过查找作用域来确定,一旦使用箭头函数,当前就不存在作用域链
使用箭头函数的注意事项:
(1)es5中的this指向:取决于调用函数的上下文对象
(2)使用箭头函数的注意事项:
1.使用箭头函数函数内部没有arguments
2.箭头函数不能使用new关键字来进行实例化对象
3.function 函数 也是一个对象,但是箭头函数不是一个对象,他其实就是一个语法糖
5.解构赋值
解构赋值是对复制运算符的一种扩展
他针对数组和对象进行操作
优点:代码书写上简单易读
(1)完全结构
(2)不完全结构 可忽略
(3)对象数组结构
6. 扩展对象功能
es6直接写入变量和函数,作为对象属性和方法
对象的方法 is()=== 主要是判断nan
对象的合并
7. Symbol
原始类型symbol,他表示是独一无二的值
最大的用途:用来定义对象的私有变量
如果用symbol定义的对象中的变量,取值时一定要用【变量名】 不能遍历
获取symbol声明的属性名(作为对象key)
8. Map 和 Set
set集合 无重复值得有序列表
Set.add添加元素
Set.delete 删除元素
Set.has()效验某个值是否在set中
Set.Size查看数组的长度
Map 类型是键值对的有序列表,键和值是任意类型
9. 数组的扩展
数组的方法 from of()
(1)From()将一个伟数组转换成正正的数组
(2)Of()任意的数据类型转换为数组
(3)Copywithin()数组内部将制定位置的元素复制到其他的位置返回当前数组
(4)Find找出第一个符合条件的数组成员
findIndex:找出第一个符合条件的数组成员的索引
(5)entries() keys() values()返回一个遍历器 可以使用for...of循环进行遍历
Keys:对键名遍历
Values:对值遍历
Entries()对键值对遍历
(6)includes()返回一个布尔值,表示某个数组是否包含给定的值 替代了indexof
10. 迭代器
迭代器是一种新的便利机制 两个核心
- 迭代器是一个接口 能快捷的访问数据 ,通过Symbol.iterator来创建迭代器 通过迭代器的next()获取迭代之后的结果
- 迭代器适用于遍历数据结构的指针(数据库的游标)
11. 生成器
Generator函数:可以通过yield关键字,将函数挂起,为了改变执行流提供了可能,同时为了做异步编程提供了方案
- 它和普通函数的区别
- (1) function后 函数名前面有一个*(2)只能在函数内部使用yield表达式,让函数挂起
- 应用场景:为不具备interator接口的对象提供了遍历操作
总结:Generator函数是分段执行的 yield语句是暂停执行 而next()恢复执行
12. Promise
promise相当于一个容器,保存着未来才会结束的事件(异步操作)的一个结果
各种异步操作都可以用同样的方式进行处理 axios
特点:
- 对象的状态不受外界影响 处理异步操作 三个状态 pending(进行中) resolved(成功) rejected(失败)
- Then()第一个参数时relove回调函数,第二个参数可选的 是relove状态的回调函数
13. Async
作用:使得异步操作更加方便
基础操作:async他会返回一个promise 对象
Async 是Generator 的一个语法糖
如果async函数中有多个await 那么then 函数就会等待所有的await指令运行完的结果才去执行
14.class类
通过object.Assign()方法一次性向类中添加多个方法
类的继承 (使用关键字)extends