es6 的一些需要额外注意的点

  1. let && const
- 拥有块级作用域

- 不可重复声明

- 暂时性死区 (作用域内声明前, 不可用, 报错)

- 未声明前, typeof 也是直接报错, 但 typeof 一个为定义的变量不会报错, 输出 undefined (typeof 不再安全)

- const,声明必须赋值 (并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动)

- let、const、class 声明的全局变量,不属于顶层对象的属性。从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩。

- globalThis 全局对象(提案)
  1. 解构
- 字符串也可以解构赋值。 const [a, b, c, d, e] = 'hello';

- 解构赋值时,如果等号右边是数值和布尔值,则会先转为对象
let { toString: s } = 123

s === Number.prototype.toString
  1. 字符串方法
- includes(), startsWith(), endsWith(), padStart(),padEnd(), tirmStart(), tirmEnd()
  1. 数字
- Number.isFinite(), Number.isNaN() 与 isNaN() 区别, isNaN()会先转换成数字, 如 isNaN('a') //true

- Number.isInteger(), Number.isSafeInteger()

- Math.sign 方法用来判断一个数到底是正数、负数、还是零

- 指数运算符(\\*\\*)
  1. 函数
- length 属性 , 含义是,该函数预期传入的参数个数, 指定了默认值后,该参数不被统计

- rest 参数(形式为...变量名),rest 参数之后不能再有其他参数

- name 属性, 函数名 var f = function () {}; // es5 f.name=> "" // es6 f.name=> "f"

- 箭头函数内的 this 对象,就是定义时所在的对象

- 箭头函数不可以当作构造函数

- 箭头函数不可以使用 arguments 对象

- 箭头函数不能用作 Generator 函数