ES6的那些特性

155 阅读2分钟

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引入