By Noxxxx from https://www.noxxxx.com/?post_type=post&p=247
欢迎分享与聚合,尊重版权,可以联系授权
现在 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() (字符串的补全)