前端ES6基础梳理

89 阅读3分钟

变量声明命令的比较

varletconst
变量变量常量(通常大写)
块级作用域
变量提升
挂载在window上
同作用域下重复声明
声明必须赋值
暂时性死区

**暂时性死区:**如果区块中存在letconst命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。

解构赋值

可以使用结构赋值的结构:具有 Iterator 接口的数据结构。

默认值

  • ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,只有当一个数组成员严格等于undefined,默认值才会生效;
  • 如果默认值是一个表达式,那么这个表达式是惰性求值的,即只有在用到的时候,才会求值;

注意

  • 当一个已经声明的变量用于解构赋值时,不要将{}写在行首,否则会解析成代码块从而报错,可以用()包裹起来;
  • 可以对数组进行对象属性的解构,如下:
let arr = [1, 2, 3];
let {0 : first, [arr.length - 1] : last} = arr;
first // 1
last // 3

用途

  • 交换变量
  • 从函数返回多个值
  • 函数参数的定义
  • 提取JSON数据
  • 函数参数的默认值
  • 遍历Map结构
  • 引入模块的指定方法

扩展运算符

rest参数的逆运算

用途

  • 复制数组
  • 合并数组
  • 与解构赋值结合
  • 字符串转数组

函数扩展

箭头函数

  • this指向定义时所在对象
  • 不可以当作构造函数
  • 没有arguments函数,使用rest参数

不适用箭头函数的情况

  • 对象当中的方法使用到this,应使用普通函数==否则this指向全局==
  • 动态的this,应使用普通函数==动态指向调用函数的元素==
  • 复杂并且有大量读写操作的函数,应使用普通函数==提高可读性==

rest参数

  • rest参数之后不能有其他参数
  • 函数的length属性,不包括rest参数

数组扩展

方法作用描述
Array.from()类数组=>数组任何有length属性的对象都可以转换
Array.of()一组值=>数组基本上可以代替Array()和new Array()
find()返回第一个符合条件的数组成员,没有即为undefined可以发现NaN
findIndex()返回第一个符合条件的数组成员的位置,没有即为-1可以发现NaN
includes()是否包含给定的值第二个参数是搜索起始位置
flat()多维数组=>一维数组参数是拉平的层数
flatMap()对每个成员执行一个函数后拉平只能展开一层

对象扩展

属性的简洁表示法

  • 属性名和变量名相同可以省略
  • fn: function(){}=>fn(){}

属性名表达式

表达式可以作为属性名、方法名,但是和简洁表示法不能混用会报错