ES6新特性

131 阅读2分钟

ES6是2015年推出的一个新的版本、这个版本相对于ES5的语法做了很多的优化

let:

  • 有声明变量
  • 没有变量提升
  • 不可重复声明
  • 具有块级作用域
  • 声明变量后可以在使用时赋值

const:

  • 只读常量
  • 没有变量提升
  • 不可重复声明
  • 具有块级作用域
  • 声明变量后必须立马赋值

箭头函数

使用 "箭头" ( => ) 来定义函数. 箭头函数相当于匿名函数, 并且简化了函数定义

箭头函数的特征:

  • 箭头函数没有this, this指向定义箭头函数所处的外部环境
  • 箭头函数的this永远不会变,call、apply、bind也无法改变
  • 箭头函数只能声明成匿名函数,但可以通过表达式的方式让箭头函数具名
  • 箭头函数没有原型prototype
  • 箭头函数不能当做一个构造函数 因为 this 的指向问题
  • 箭头函数没有 arguments 在箭头函数内部访问这个变量访问的是外部环境的arguments, 可以使用 ...代替

解构赋值

常用对象解构:

对象解构的语法形式是在一个赋值操作符左边放置一个对象字面量

常用数组解构:

它使用的是数组字面量,且解构操作全部在数组内完成,而不是像对象字面量语法一样使用对象的命名属性

字符串解构:const [a, b, c, d, e] = "hello"

数值解构:const { toString: s } = 123

布尔解构:const { toString: b } = true

对象解构

  • 形式:const { x, y } = { x: 1, y: 2 }
  • 默认:const { x, y = 2 } = { x: 1 }
  • 改名:const { x, y: z } = { x: 1, y: 2 }

数组解构

  • 规则:数据结构具有Iterator接口可采用数组形式的解构赋值
  • 形式:const [x, y] = [1, 2]
  • 默认:const [x, y = 2] = [1]

函数参数解构

  • 数组解构:function Func([x = 0, y = 1]) {}
  • 对象解构:function Func({ x = 0, y = 1 } = {}) {}

应用场景:

  • 交换变量值:[x, y] = [y, x]
  • 返回函数多个值:const [x, y, z] = Func()
  • 定义函数参数:Func([1, 2])
  • 提取JSON数据:const { name, version } = packageJson
  • 定义函数参数默认值:function Func({ x = 1, y = 2 } = {}) {}
  • 遍历Map结构:for (let [k, v] of Map) {}
  • 输入模块指定属性和方法:const { readFile, writeFile } = require("fs")