关于ES6的重点罗列(阮一峰ES6笔记总结)

变量

ES5只有两种声明变量的方法:varfunction命令;ES6中有六种:除了ES5的两种加上letconst还有importclass命令。

新增let
  • 用于声明变量
  • 块级作用域
  • 不存在变量提升
  • 暂时性死区
  • 同一作用于内,不允许重复声明
新增const
  • 声明只读常量
  • 必须在初始化的时候赋值
  • 块级作用域
  • 没有变量提升,存在暂时性死区
  • 生命的常量不可重复声明
  • 对于符合类型的前两;变量名只是保证指向地址不变

变量解构赋值

  • 模式匹配
  • 不完全解构
  • var、let、const声明的变量都适用
  • 允许指定默认值
  • 解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量(真正被赋值的是后者)
  • 解构赋值的变量都会重新声明;let和const中应该注意
  • 解构可以用于嵌套结构的对象
  • 字符串也可以解构赋值
  • 数值和布尔值的解构赋值
  • 解构赋值的规则是,只要等号右边的值不是对象,就先将其转为对象

字符串

字符串可以被for...of循环遍历
includes(), startsWith(), endsWith()
  • includes():返回布尔值,表示是否找到了参数字符串。
  • startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。
  • endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。
  • 三个方法都支持第二个参数,表示开始搜索的位置
repeat()
  • 返回一个新字符串,表示将原字符串重复n次
  • 参数如果是小数,会被取整
  • 参数是负数或者Infinity,会报错(参数是0到-1之间的小数,则等同于0;先取整)
padStart(),padEnd()
  • 字符串补全
模板字符串
  • 用反引号(`)标识
  • 模板字符串中嵌入变量,需要将变量名写在${}之中
  • 模板字符串之中能调用函数
  • 模板字符串能嵌套

数值

Number.isFinite(), Number.isNaN()
  • Number.isFinite()判断是否为小数
  • Number.isNaN()片段是否为空
  • 只对数值有用;非数值都返回false
Number.isInteger()
  • 判断是否为整数
安全整数和Number.isSafeInteger()
  • JavaScript能够准确表示的整数范围在-253到253之间(不含两个端点),超过范围,无法精确表示
  • Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER两个常量,来表示这个范围的上下限

数组

Array.from()
  • 将类数组对象转化成正真的数组
// ES5的写法
var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c']

// ES6的写法
let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
  • Array.from可以接受第二个参数。作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组。
Array.of()
  • Array.of方法用于将一组值,转换为数组
  • 弥补数组构造函数Array()的不足,参数个数的不同,会导致Array()的行为有差异
//只有当参数个数不少于2个时,Array()才会返回由参数组成的新数组
Array() // []
Array(3) // [, , ,]
Array(3, 11, 8) // [3, 11, 8]

Array.of() // []
Array.of(undefined) // [undefined]
Array.of(1) // [1]
Array.of(1, 2) // [1, 2]
copyWithin()
  • 将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组
    Array.prototype.copyWithin(target, start = 0, end = this.length)
find()和findIndex()
  • 用于找出第一个符合条件的数组成员,它的参数是一个回调函数
  • 回调函数可以接受三个参数,依次为当前的值、当前的位置和原数组
fill()
  • 使用给定值,填充一个数组
  • fill方法还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置
entries(),keys()和values()
  • 用于遍历数组,它们都返回一个遍历器
  • keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历
includes()
  • Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似
数组的空位
  • ES6则是明确将数组空位转为undefined

函数

函数参数的默认值
  • 与解构赋值默认值结合使用
  • 非尾部的参数设置默认值,实际上这个参数是没法省略的;可写作undefined
函数的length属性
  • 回没有指定默认值的参数个数
函数参数的作用域
  • 参数默认值是一个变量,则该变量所处的作用域,与其他变量的作用域规则是一样的,即先是当前函数的作用域,然后才是全局作用域
rest参数
  • 用于获取函数的多余参数
扩展运算符
  • 扩展运算符(spread)是三个点(…)
  • 合并数组[1, 2, ...more]
  • 与解构赋值结合
  • 函数的返回值
  • 字符串转化成数组[...'hello'] [ "h", "e", "l", "l", "o" ]
  • 实现了Iterator接口的对象
name属性
  • 函数的name属性,返回该函数的函数名
  • Function构造函数返回的函数实例,name属性的值为“anonymous
箭头函数
  • 使用“箭头”(=>)定义函数
  • 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象
  • 不可以当作构造函数,也就是说,不可以使用new命令
  • 不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替
  • 不可以使用yield命令,因此箭头函数不能用作Generator函数
  • this对象的指向是可变的,但是在箭头函数中,它是固定的
尾调用优化
  • 尾调用是指某个函数的最后一步是调用另一个函数
  • 尾调用不一定出现在函数尾部,只要是最后一步操作即可
尾递归
  • 函数调用自身,称为递归。如果尾调用自身,就称为尾递归

非常建议对阮一峰老师的ES6入门进行阅读;会有跟进一步对ES6的新特性的理解。

原文地址:https://www.cnblogs.com/smileyqp/p/12675287.html