ES6
let const
let
- 变量不能重复声明
- 块级作用域
- 不存在变量提升
-
const
一定要赋初始值
- 一般常量用大写
- 常量的值不能修改
- 块级作用域
- 对于数组和对象的元素修改,不算做对常量的修改,不会报错
var let const的区别
var
- ES5
- 存在变量提升
- 能对一个变量进行多次声明
- 全局变量,在函数中是局部变量(在函数内不使用var,变量是全局的)
let const
- ES6
- 不存在变量提升
- 块级作用域
- 在同一作用域内不存在重复声明变量
var 和 let 可以修改声明的变量,const 一旦声明,常量的值就不能改变。
解构赋值
箭头函数
模板字符串
- 声明字符串
let str = ' typeof str 是 String'
- 内容中可以直接出现换行符
变量拼接
let lovest = ‘kun’
let out =${lovest) is loverest 参数 …
扩展运算符 …
Symbol
迭代器
生成器
Promise 异步编程
- 解决回调地狱
三种状态——pending fulfilled rejected
const p = new Promise(function(resolve,reject){resolve-成功调用reject-失败调用可以通过调用改变状态});p.then(function(value){value-success},function(reason){reason-fail});
集合 Set()
一些方法
s.size 获取元素个数
let arr = [1,2,3,4,1]let s = new Set(arr);console.log(s.size)//4
add()
- delete()
- has() 检测有无
-
数组去重
let arr = [1,2,3,4,1]let s = new Set(arr);console.log(s)

let arr = [1,2,3,4,1]let s = new Set(arr);console.log(...s)
求交集
let arr = [1,2,3,4,1]let arr2 = [1,3,5,6,7,8]let result = [...new Set(arr)].filter(item => new Set(arr2).has(item));console.log(...result) // 1 3
求并集
let arr = [1,2,3,4,1]let arr2 = [1,3,5,6,7,8]let result = new Set([...arr,...arr2])console.log(...result) //1 2 3 4 5 6 7 8
Map
类似于对象,也是键值对的集合。
//声明 Maplet m = new Map();//添加元素m.set('name','kun')m.set('change',function(){console.log('balabala')})let key ={school:'atguigu'}m.set(key,['杭州','上海'])//size// console.log(m.size)//删除// m.delete('name')//获取console.log(m.get('change'))console.log(m.get(key))//清空m.clear();//遍历for(let v of m){console.log(v)}console.log(m)
class类
模块化
export 暴露
-
babel
ES7
includes()
返回boolean
- 对比 indexOf 返回-1
let arr = [1,2,3,4,1]console.log(arr.includes(2)); //trueconsole.log(arr.indexOf(2)); //1
** 幂运算符
2 ** 10 == Math.pow(2,10)ES8
async await
async 返回的是promise对象
await
返回的是promise成功的值。
await的promise失败了,就会抛出异常,需要通过try…catch捕获处理。
async 和 awaittrim 清除字符串两侧的空白
ES10
trimStrat()
trimEnd()
flat() 将多维数组转化为低维数组
const arr = [1,2,3,4,[5,6]]console.log(arr.flat()) //[1, 2, 3, 4, 5, 6]
flatMap() flat()和map()的结合
map()const arr = [1,2,3,4,1]const result= arr.map(item => item*10)console.log(result) //[10, 20, 30, 40, 10]
ES11
Promise.allSettled()
不管成功还是失败,都会显示Promise.all()
都成功才会成功;有一个失败会显示失败的值matchAll() 用于正则数据的批量提取
?.可选链操作符
BigInt 用于大数值运算
globalThis 绝对全局对象(如果想对全局对象做一些操作时可用)
