1.let、const:
var、let、const的区别
- var存在变量提升,let和const没有变量提升
- var可以多次声明同一个变量,let和const不可以多次声明同一个变量
- const声明变量,声明后不可以修改(可以单独修改对象和数组里的值)
- var没有块级作用域,let和const有块级作用域
2.箭头函数:
箭头函数和普通函数的区别
- 定义时格式不同,更加简洁
- this指向不同,箭头函数没有自己的this,箭头函数里的this指向箭头函数定义时外层函数的this指向,箭头函数里的this指向无法修改
- 箭头函数没有自己的prototype原型、箭头函数不能new所以不能当作构造函数
3.Promise:
- 异步编程的一种解决方案,解决了回调地狱
- 三种状态:pending(等待或进行中)、fulfilled(已成功)、rejected(已失败)
- promise方法:resolve()(返回一个成功的promise对象)、reject()(返回一个失败的promise对象)、then()、catch()、all()(全部成功返回结果)、race()(第一个成功的返回结果)
4.解构赋值:
从数组或对象中提取值,赋给变量
let [a,b,c] = [1,2,3] //a为1
let [x,,z] = [1,2,3] //x为1,z为3
let [m,n,...rest] = [1,2,3,4,5] //m为1,n为2,rest为[3,4,5]
let {name,age} = {name:'小白',age:12} //name为小白,age为12
let {name:aaa,age:bbb} = {name:'小白',age:12} //aaa为小白,bbb为12
5.扩展运算符:
- 拷贝数组或对象
- 合并数组或对象
- 展开数组
- 函数传参(展开数组)
- 结合Set数组去重
let arr1 = [1,2,3]
let arr2 = [...arr1]
let arr1 = [1,2,3]
let arr2 = [4,5,6]
console.log([...arr1,...arr2]) //[1,2,3,4,5,6]
console.log(...[1,2,3]) //1,2,3
const fn1 = (a,b,c) => {
}
let arr1 = [1,2,3]
fn1(...arr1)
let arr1 = [1,1,2,2,3,3]
let arr2 = [...new Set(arr1)] //[1,2,3]
6.Map:
新的数据结构,键可以是任何类型的值,不仅是字符串,可以用for of遍历
let map1 = new Map()
map1.set('name','小白')
map1.set(1,'啊哈')
map1.get('key1') //'小白'
map1.get(1) //'啊哈'
map1.has('key1') //true
map1.size //2
map1.delete('key1')
7.Set:
新的数据结构,不允许值重复,可以用for of遍历
let set1 = new Set()
set1.add(1)
set1.add(2)
set1.add(2) //无效果
set1.has(1) //true
set1.size //2
set1.delete(2)
8.模块化:
使代码组织和管理更清晰高效,只有export导出的部分才能被其他模块使用,其他模块需要import引入