ES6新特性

98 阅读2分钟

1,模板字符串

${}里面
可以放:
变量,算术运算,三目运算符,对象属性,创建对象,调用函数,访问数组元素 这些有返回值的合法的js表达式
不可以放:
没有返回值的js的表达式,也不能放分支/判断、循环等程序结构

2,let

注意事项:

  1. 因为不会提前声明, 因此所以不能在声明变量之前, 提前使用该变量
  2. 在相同的作用域内, 禁止声明两个同名变量
  3. 因为let的底层是匿名函数自调用, 所以即使在全局创建的变量, 在window中也找不到该变量

3,箭头函数

4,for of

说明:

  1. for 可遍历数组和类数组对象
  2. for of 可遍历数组和类数组对象
  3. for in 可遍历对象和关联数组
  4. forEach 遍历数组对象

5,参数增强

5.1默认参数

function fun(arg1='默认参数1'){}

5.2剩余参数

function fun(arg1,...arr){
    console.log(arr)
}
fun(1,2,3,4)//[2,3,4]

5.3扩展运算符

const arr=[1,2,3]
console.log(...arr)//1,2,3

6,解构

const obj={name:'jxh',age:16}
const {name,age}=obj
console.log(name,age)//xhh,16

7,class

定义class三步法:

  • 用class{}包裹原构造函数+原型对象方法
  • 原构造函数名升级为整个class的名字,所有构造函数统一更名为"constructor“
  • 原型对象中的方法,不用再加prototype前缀,也不用=function,直接简写为: 方法名(){ ... ...} 说明: 虽然直接在class中定义的方法,都默认保存在原型对象中。但是直接在class中定义的属性,却不会成为共有属性,不会保存在原型对象中。而是成为每个子对象的自有属性。

8,promise(详见promise和async/await区别(待更。。。))