let和const命令
let和const有块级作用域,还有暂时性死区,即在声明之前不能调用。
变量的解构赋值
数组的解构赋值:let [a, b, c] = [1, 2, 3]
对象的解构赋值:let { name, age } = { name: "sifan", age: 20 }
字符串的解构赋值:let [a, b, c, d, e] = "hello"
字符串的扩展
模板字符串:``
可以使用for of遍历
新增方法:
includes():返回布尔值,表示是否找到了参数字符串
startsWith():返回布尔值,表示参数字符串是否在字符串的头部
endsWith():返回布尔值,表示参数字符串是否在字符串的尾部
都支持第二个参数,表示开始搜索的位置。
repeat():返回一个新字符串,表示将原字符串重复n次
padStart()/padEnd():补全字符串长度,接受两个参数,第一个表示字符串总长度,第二个表示用来补全长度的字符串
trimStart()/trimEnd():返回新字符串,消除头部或尾部的空格
replaceAll():接受两个参数,第一个表示需要替换的字符串,第二个表示替换成什么字符串
函数的扩展:
函数可以设置默认值
函数的length属性返回没有指定默认值的参数个数
多余参数(rest),及使用...变量名,获取函数的多余参数,这样就不需要使用arguments对象了,此时rest是一个数组
尾调用优化:就是函数的最后一步是返回调用另一个函数后的结果,并且只返回调用函数的返回结果,不进行其他操作(注意,在返回的函数中不能使用外部函数的变量)
数组的扩展
扩展运算符,及...
Array.from():用于将两类对象转为真正的数组:类似数组的对象和可便利的对象(Set和Map)
Array.of():用于将一组值,转换为数组
copyWithin():在当前数组内部,将指定位置的成员赋值到其他位置,然后返回当前数组。接受三个参数,target,从当前位置开始替换数据,start表示从该位置开始读取数据,end表示从该位置停止读取数据
find()和findIndex():find查找符合条件的数组成员,参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回。findIndex返回下标
fill():使用给定值,填充一个数组
includes():表示某个数组是否包含给定的值,返回一个布尔值
对象的扩展
新增super关键字,用于执行当前对象的原型对象,并且只能用在对象的方法之中
Object.assign():用于对象的合并,将源对象的所有可枚举属性,复制到目标对象。 //Object.assign(target, source1, source2)
注意,如果目标对象与源对象有同名属性,则后面的属性会覆盖前面的属性,而且对于嵌套的对象,一旦遇到同名属性,它的处理方法是替换,而不是添加
Set和Map数据结构:Set类似于数组,但是成员的值都是唯一的,没有重复的值。Set通过add()方法加入成员,delete()删除某个值,返回一个布尔值,表示删除是否成功。has()返回一个布尔值。clear()清楚所有成员,没有返回值。
Map类似于对象,但是"键"的范围不限于字符串,各种类型的值都可以当作键。Map的set方法添加一个属性,get读取这个键,delete方法删除键,