**1、let和const**
(1) let声明变量,const声明常量,不允许重复声明
(2) let是块级作用域,不会挂载到window对象中
(3) let需要先声明再调用,不会存在变量提升的问题
作用域:
全局作用域
函数作用域:function() {}
块级作用域:{}
声明方法:var、const、let、function、class、import
**2.解构赋值**
字符串解构:const [a, b, c, d, e] = "hello"
数值解构:const { toString: s } = 123
布尔解构:const { toString: b } = true
对象解构:
形式:const { x, y } = { x: 1, y: 2 }
默认:const { x, y = 2 } = { x: 1 }
改名:const { x, y: z } = { x: 1, y: 2 }
数组解构:
规则:数据结构具有Iterator接口可采用数组形式的解构赋值
形式:const [x, y] = [1, 2]
默认:const [x, y = 2] = [1]
函数参数解构:
数组解构:function Func([x = 0, y = 1]) {}
对象解构:function Func({ x = 0, y = 1 } = {}) {}
**3、字符串的扩展**
(1)判断一个字符串是否在另一个字符串
includes():返回布尔值,表示是否找到了参数字符串。
startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
(2)repeat()
repeat返回一个新的字符串,并将原字符串重复n次。
(3)padStart(),padEnd()
(4)模板字符串
**4、数值的扩展**
Number.parseInt(), Number.parseFloat()
Number.isInteger() 判断一个数值是否为整数
Math.trunc() 反正一个值的整数部分
Math.sign()
**5.属性遍历**
for-in:遍历对象自身可继承可枚举属性
Object.keys():返回对象自身可枚举属性的键组成的数组
Object.getOwnPropertyNames():返回对象自身可继承可枚举非枚举属性的键组成的数组
Object.getOwnPropertySymbols():返回对象Symbol属性的键组成的数组
Reflect.ownKeys():返回对象自身可继承可枚举非枚举Symbol属性的键组成的数组
6.数组扩展
扩展运算符(...):转换数组为用逗号分隔的参数序列([...arr],相当于rest/spread参数的逆运算)
Array.from():转换具有Iterator接口的数据结构为真正数组,返回新数组
类数组对象:包含length的对象、Arguments对象、NodeList对象
可遍历对象:String、Set结构、Map结构、Generator函数
Array.of():转换一组值为真正数组,返回新数组
copyWithin():把指定位置的成员复制到其他位置,返回原数组
find():返回第一个符合条件的成员
findIndex():返回第一个符合条件的成员索引值
fill():根据指定值填充整个数组,返回原数组
keys():返回以索引值为遍历器的对象
values():返回以属性值为遍历器的对象
entries():返回以索引值和属性值为遍历器的对象
数组空位:ES6明确将数组空位转为undefined(空位处理规不一,建议避免出现)