es6 的一些需要额外注意的点
- 拥有块级作用域
- 不可重复声明
- 暂时性死区 (作用域内声明前, 不可用, 报错)
- 未声明前, typeof 也是直接报错, 但 typeof 一个为定义的变量不会报错, 输出 undefined (typeof 不再安全)
- const,声明必须赋值 (并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动)
- let、const、class 声明的全局变量,不属于顶层对象的属性。从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩。
- globalThis 全局对象(提案)
- 字符串也可以解构赋值。 const [a, b, c, d, e] = 'hello';
- 解构赋值时,如果等号右边是数值和布尔值,则会先转为对象
let { toString: s } = 123
s === Number.prototype.toString
- includes(), startsWith(), endsWith(), padStart(),padEnd(), tirmStart(), tirmEnd()
- Number.isFinite(), Number.isNaN() 与 isNaN() 区别, isNaN()会先转换成数字, 如 isNaN('a') //true
- Number.isInteger(), Number.isSafeInteger()
- Math.sign 方法用来判断一个数到底是正数、负数、还是零
- 指数运算符(\\*\\*)
- length 属性 , 含义是,该函数预期传入的参数个数, 指定了默认值后,该参数不被统计
- rest 参数(形式为...变量名),rest 参数之后不能再有其他参数
- name 属性, 函数名 var f = function () {}; // es5 f.name=> "" // es6 f.name=> "f"
- 箭头函数内的 this 对象,就是定义时所在的对象
- 箭头函数不可以当作构造函数
- 箭头函数不可以使用 arguments 对象
- 箭头函数不能用作 Generator 函数