ES6

现在 Js 版本更新的速度真的是要开车来追了。阮一峰老师的 ES6 教程也看了一小半,新的语法确实好用,不过普通项目要用还要配上 Babel 这些个全家桶,未免“太劳民伤财”,像 Vue 中直接有 webpack 能帮你搞定也还算是降低门槛了…

还是觉得只有自己记录过的东西才算是有印象了,看过的也就是过眼云烟,过几天就忘,自己记录的还是更靠谱。

let vs var vs const

let 不存在变量提升并且有块级作用域的概念。

暂时性死区—-ES6明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。

之前 typeof 永不报错的情况将失效了。

const声明一个只读的常量。一旦声明,常量的值就不能改变。一旦声明变量,就必须立即初始化。

const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。所以对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。而引用类型的,里面的属性是可以进行改变的

let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。

var tmp = 123;

if (true) {
  tmp = 'abc'; // ReferenceError
  let tmp;
}

解构

解构不成功,变量的值就等于undefined

对于数组解构是按照排列顺序,而对象则是要写明属性名称,并且同名。

字符串扩展

这一章除了修复字符识别的bug之外,有用的 API 还有 include(查看字符串中是否包含某个单词) padStart() padEnd() (字符串的补全)