1. let、const关键字声明变量
let:var的作用范围是全局,let可以理解为局部
const:声明的变量就变为了常量
2.字符串的扩展
- api
includes():返回布尔值,表示是否找到了参数字符串
startsWith():返回布尔值,表示参数字符串是否在原字符串的头部
endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部
- 字符串模板标记
旧版本中字符串的值不能换行,es6中只要是``之间的内容都会被作为字符串的值
3.解构表达式
es6中允许按照一定模式从数组和对象中提取值
4.函数
-
为函数的参数赋默认值
-
箭头函数
-
对象中函数属性简写
-
箭头函数结合结构表达式
-
map()和reduce()
map():接收一个函数,将原数组中的所有元素用这个函数处理后返回新数组返回
reduce():接收一个函数(必须)和一个初始值(可选),改函数接收两个参数
-
第一个参数是上一次reduce()处理的结果
-
第二个参数是数组中要处理的下一个元素
reduce()会从左到右把数组中的元素用reduce()处理,并把处理的结果作为下次reduce()的第一个参数,如果是第一次,会把前两个元素作为计算参数,或者把用户指定的初始值作为起始参数如图所示:首先将初始值赋给a,然后将数组第一个元素赋给b,执行函数并将函数的返回值当作下一轮的初始值。类似sum操作
-
扩展运算符
扩展运算符(spread)是三个点,将数组转为用逗号分隔的参数序列
-
Promise
简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise是一个对象,从它可以获取异步操作的消息。Promise提供统一的API,各种异步操作都可以用同样的方法进行处理
-
数据结构set和map
Set,与java中的set集合非常相似,不能保存相同的元素
创建:
API:
set.add(1); //添加
set.clear(); //清空
set.delete(2); //删除指定元素
set.has(2); //判断是否存在
set.forEach(function(){}) //遍历元素
set.size; //元素个数(是属性)
Map:本质是Object类似的结构。不同在于,Object强制规定key只能是字符串,而Map中的key可以是任意对象;即:
· object是<string,object>集合
· Map是<object,object>集合
创建:
API:
map.set(key, value); //添加
map.clear(); //清空
map.delete(key); //删除指定元素
map.has(key); //判断key是否存在
map.forEach(function(key,value{})); //遍历
map.size; //元素个数(是属性)
map.values(); //获取value的迭代器
map.keys(); //获取key的迭代器
map.entries(); //获取entry的迭代器
-
class(类)的基本语法
-
Generator函数
在Javascript中,一个函数一旦开始执行,就会运行到最后或遇到return时结束,运行期间不会有其它代码能够打断它,也不能从外部再传入值到函数体内。而Generator函数(生成器)的出现使得打破函数的完整运行成为了可能,其语法行为与传统函数完全不同。Generator函数是ES6提供的一种异步编程解决方案,形式上也是一个普通函数
特征:- function关键字与函数名之间有一个星号 “*”
- 函数体内使用 yield 表达式,定义不同的内部状态
- 直接调用 Generator函数并不会执行,也不会返回运行结果,而是返回一个遍历器对象(Iterator Object)
- 依次调用遍历器对象的next方法,遍历 Generator函数内部的每一个状态
-
for…of循环,遍历迭代器
-
Decorator修饰器
修饰器(Decorator)是一个函数,用来修改修改类的行为,类似java的注解。
原因:ES6中,并没有支持该用法,再ES2017中才有,所以不能直接运行,需要进行转码后再执行。转码的意思是:将ES6或ES2017转为ES5执行 -
模块化
将代码进行拆分,方便重复利用,类似java的封装、导包。js中没有包的概念,所以是模块
命令:
· export 用于规定模块的对外接口
· import 用于导入其他模块提供的功能