1.ES6背景简介----建议百度
2.ES6新增--let
1.let声明的变量不能不能重复声明,只能声明一次。
2.如果在一个代码块里面用let声明变量,则let会临时的生成一个代码块的作用域,在这个作用域空间外面不能访问用let声明的变量,这个作用域空间只针对let,不影响用var声明的变量
3.用let声明的变量没有提升这一说法,必须先声明再使用。
3.ES6新增--const
1.const声明变量必须初始化,且初始化的值无法改变。将相当于定义了一个常量,类比于C语言中的define。
2.const如果再代码块中声明,则也会形成将该代码块形成一个作用域空间,const也必须先声明再使用,没有提升的说法。
4.解构赋值
解构赋值右边为:解构的源
解构赋值左边为:解构的目标
解构赋值中,如果右边没有值,而左边的变量有值,那么打印结果为左边的值,如果两边都有值,则优先将左边的值赋值给变量。
5.Map
Map是一个类似于对象的数据容器。容器里面保存的是键值对:key=>value形式,可以通过key取到value,并且再Map中key不能重复,如果重复,那么覆盖之前的值。
1.Map遍历--for....of forEach
2.Map 与 Array的转换--var myMap = new Map(kvArray);
--var outArray = Array.from(myMap);
3.Map复制,只会复制里面的值,但是不相等,因为Map 对象构造函数生成实例,迭代出新的对象。
6.Set
Set相当于一个集合,可以存入任何类型的值,但是这些值都是唯一的,没有重复的值
1.Set的转换--var myArray = [...mySet];--将Set对象转换为数组
--Set对象不能转换成字符串
2.Set作用--数组去重
7.ES6新增字符串方法
includes():返回布尔值,判断是否找到参数字符串
startsWith():返回布尔值,判断参数字符串是否在原字符串的头部。
endsWith():返回布尔值,判断参数字符串是否在原字符串的尾部。
以上三个方法都可以接受两个参数,需要搜索的字符串,和可选的搜索起始位置索引
repeat():返回新的字符串,表示将字符串重复指定次数返回。
padStart:返回新的字符串,表示用参数字符串从头部补全原字符串
padEnd:返回新的字符串,表示用参数字符串从尾部补全原字符串。
8.ES6中对象
1.对象中的属性名可以直接写变量,则表示属性名就是变量名,属性值就是变量值。
2.对象中的方法也可以简写直接写方法名+()+{}
3.对象中属性名可以用表达式表示,但是要用中括号将表达式括起来。
ps:属性的简洁表示法和属性名表达式不能同时使用,否则会报错。
4.对象拓展运算符:...三个点,作用:复制对象值;合并两个对象
5.对象新方法:Object.is()--与全等(===)类似
与===的区别:用is方法判断+0不等于-0,而===判断+0等于-0
用is方法判断NaN等于本身,而===判断NaN不等于本身
9.ES6中数组
1.数组的方法:
Array.of():将参数中所有值作为元素形成数组。
Array.from():将类数组对象或可迭代对象转化为数组。
find():查找数组中符合条件的元素,若有多个符合条件的元素,则返回第一个元素。
findIndex():查找数组中符合条件的元素索引,若有多个符合条件的元素,则返回第一个元素索引。
fill():将一定范围索引的数组元素内容填充为单个指定的值。
entrys():遍历键值对
keys():遍历键名
values():遍历键值
includes():返回布尔值,判断数组是否包含指定值。
flat() :将嵌套数组降维
(...)扩展运算符:复制数组--合并数组
ES5中的数组方法:
unshift():头部新增,返回新增之后长度,改变数组内部元素
shift():头部删除,返回值是删除的那一项元素,改变数组内部元素
delete 可以删除数组某一项下标(对象属性),删除完数组长度不变,值消失变为undefined
查找: indexOf()--返回数组中第一个目标元素索引;lastIndexOf()--返回数组中最后一个目标元素索引
join()和toString():将数组转换为字符串
concat():将两个数组拼接为一个新数组,不改变原数组。
splice():截取一个数组的子集创建一个新数组,原数组改变
slice():截取一个数组的子集创建一个新数组,原数组不改变
ps:splice()第二个参数是截取长度;slice()第二个参数是截取结束位置元素索引
push():在数组的结尾添加一个或多个元素,返回新数组的长度,原数组改变
pop():移除数组最后一个元素,返回移除的元素,原数组改变;
reverse():将数组中元素的顺序进行逆转,原数组改变
sort():将数组中元素进行排序,默认按照字符编码的顺序进行排序。
sort()方法要使用其他标准进行排序的话,则需要提供比较函数。该函数要比较两个值,然后返回一个用于 说明这两个值的相对顺序的数字
迭代器方法:
forEach() :对数组中的每一项运行给定函数,没有返回值,它和使用for循环的结果相同
some():遍历数组,遇到符合返回值的返回true,并立即停止,不会生成新数组 也不会改变原数组
every():就是遍历数组,遇到与返回值不符合的就返回false,并立即停止,不会生成新数组 也不会改变原数组
map():先创建一个和原数组长度相同的数组,然后遍历原数组,将遍历原数组所有元素后的结果全部放到新数组里面,产生新数组,不改变原数组
filter():遍历数组,然后将符合返回值的元素拿出来重新组合成一个数组,产生新数组,不改变原数组
reduce():将数组中的元素进行累加或者累乘,返回最后累加和或者累乘积
ps:累加起始值赋值为0,累乘起始值赋值为1
Array.isArray():判断是否是数组
10.箭头函数
定义方式:参数 => 函数体
(参数) => {函数体}
1.箭头的前面是小括号,放形参,只有一个形参的时候可以省略小括号
2.箭头的后面是函数体 ,如果函数体只有一个语句,没有{},此时的返回值不需要return;
ps:1.箭头函数没有this对象,若需要找this,则忽略箭头函数,找距离this最近的function或者方法,调用它们的就是this,若没有则为全局。
2.箭头函数不可以作为构造函数,也就是不能使用 new 命令,否则会报错