let
- let变量不能重复声明
- 块级作用域(代码块生效 if else while for)
- 不存在变量提升
- 不影响作用域链 *const
- 一定要赋初始值
- 一般常量使用大写(潜规则)
- 常量的值不能修改
- 块级作用域
- 对于数组和对象的元素修改,不算做对常量的修改,不会报错 变量的解构赋值 1.数组的解构 2.对象的解构 箭头函数
es6允许使用【箭头】定义函数
let fn=function(){
}
let fn=(a,b)=>{
return a+b
}
- this是静态的,this始终指向函数声明时所在作用域下的this的值
2.不能作为构造函数实例化对象
3.不能使用arguments变量
4.箭头函数的简写
- 省略小括号,当形参有且只有一个的时候 2)省略花括号括号,当代码体还有一条语句的时候,此时return必须省略,而且语句 执行的结果就是函数的返回值
- 箭头函数适合与this无关的回调,定时器,数组的方法回调
- 箭头函数不适合与this有关的回调,事件回调,对象的方法
rest参数 Rest 参数接受函数的多余参数,组成一个数组,放在形参的最后
扩展运算符
symbol
symbol特点 symbol
symbol内置属性
\
迭代器
迭代器(iterator)是一种接口,为各种不同的数据结构提供统一的访问机制,任何数据只要部署iterator接口(对象里面的属性),就可以完成遍历
- es6创造了一种新的遍历命令for...of循环,iterator接口主要提供or...of消费
- 原生具备iterator接口的数据(可用for of遍历)
- Array
- Arguments
- Set
- Map
- String
- TypedArray
- NodeList
3.工作原理
- 创建一个指针对象,指向当前数据结构的起始位置
- 第一次调用对象的next方法,指针自动指向数据结构的第一个成员
- 接下来不断调用next方法,指针一直往后移动,直到指向是最后一个成员为止
- 每次调用next方法返回一个包含value和done属性的对象
Promise
语法上说promise是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果。有三个状态 初始化、成功、失败
- Promise构造函数:Promise (excutor) {}
- Promise.prototype.then方法 then方法的返回结果是promise对象,对象状态有回调函数饿执行结果决定
- 如果回调函数中返回的结果是非promise属性,状态为成功,返回值为对象的成功值
- 如果回调函数中返回的是promise属性,状态为promise的状态
3.Promise.prototype.catch方法
Set set介绍
并集
let union=[...new Set([...arr,...arr2])]
es6数值扩展
- Number.EPSILION 2.二进制和八进制 3.Number.isFinite 检测一个数值是否为有限数
- Number.isNaN 检测一个数值是否为NaN 5.Number.ParseInt parseFlost 字符串转整数
- Number.isInteger 判断一个数是否为整数\
- Math.trunc 将数字的小数部分抹掉
- Math.sign 判断一个数是正数 (1)负数(-1) 还是零(0)
**es6对象方法扩展
- Object.is 判断两个值是否完全相等
- Object.assign 对象的合并 第一个参数是模板 ,第二个是要覆盖的内容
- Object.setPrototypeOf 设置原型对象 Object.getPrototypeof\
*模块化 模块化的好处
防止命名冲突
代码复用
高维护性
模块化规范产品
es6之前的模块化规范有:
CommonJS=>nodejs、browserify
AMD=>requireJS
CMD=>seajs
es6模块化语法
export 命令用于规定模块的对外接口 分别暴露、统一暴露、 expprt default 默认暴露
import 输入其他模块提供的功能 通用的导入方式、解构赋值形式、简便形式
\
es7新特性
- Array.prototype.includes includes检测数组中是否还有某个值
- ** 2**10 2的十次方\
es8新特性\
****async和await 两种语法结合可以让异步代码像同步代码一样
async函数
1.async函数的返回值为promise对象
返回的结果不是一个promise类型的对象,返回的是成功的promise
抛出错误,返回的结果是一个失败的Promise
返回的如果是一个promise对象,
2.promise对象的结果有async函数执行的返回值决定
await
- await必须写在async函数中
- await右侧的表达式一般为promise对象
- await返回的是promise成功的值
- await的promise如果失败了,就会抛出异常,需要通过try...catch来捕获处理
es8中对象方法扩展
- Object.keys(obj) 获取对象所有的键
- Object.values (obj) 获取对象所有的值
- Object.entries(对象) 返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值对数组
- Object.getOwnpropertyDescriptors(obj) 对象属性的描述对象
es10
object.fromEntries 二维数组转化为对象
trimStart清除字符串左侧空白字符
trimEnd清除字符串右侧空白字符\
flat 将多维数组转化为低纬数组 参数为深度 是一数字
flatMap 此方法和flat一样会降维数组 不过此方法只会降维一次 并可以对数组中的元素进行迭代通过return返回 (不会 改变原数组 需要使用一个变量容器承接)
Symbol.prototype.description 用于返回指定符号对象的可选描述
es11\
import动态引入
globalThis 始终指向全局对象