乐趣区

ES6知识拾遗再读ES6入门书籍总汇

1.var,let,const 区别
答:(1).var 有变量声明提升,let&&const 没有,这样导致了 let,const 必须声明后才可以访问使用(tdz) => 暂时性死区”也意味着 typeof 不再是一个百分之百安全的操作,如果一个变量没有被声明,使用 typeof 反而不会报错(值会变为 ’undefined’)(没有遇到 let/const),(2)var,let 可以在定义后重新赋值,const 是个常量,它不可以(但是如果他是复杂数据类型,改变它的属性值是没问题的,与定义概念并不冲突),(3).var 可以重复声明,取值去最后的声明,let 不允许在相同作用域内,重复声明同一个变量,(3). 块状作用域 => {} 这句话有异议,但是说的很有道理, 块级作用域的出现,实际上使得获得广泛应用的立即执行函数表达式(IIFE)不再必要了。Object.freeze({}); => 冻结对象,(4). 未定义就声明的变量会默认为 window 全局的变量,var 的变量都归 window 所有,let 命令、const 命令、class 命令声明的全局变量,不属于顶层对象的属性即不会归 window 所有

总结:es6 的六种声明变量  => var let const function import class  注意: 在浏览器环境指的是 window 对象,在 Node 指的是 global 对象。

2. 变量的解构赋值 => es6 允许一定的模式,从数组中和对象中提取,对变量进行赋值,这被称为解构

=> 只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值, 如果解构失败,变量的值等于        
undefined

(1). 数组的模式匹配 模式匹配”,只要等号两边的模式相同(数据结构),左边的变量就会被赋予对应的值
    let [a, b, c] = [1, 2, 3]
(2). 对象的解构赋值
    对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的                
    属性没有次序,变量必须与属性同名,才能取到正确的值
    let {foo, too} = {foo: 'foo', too: 'too'}
(3). 字符串的解构赋值
    字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象

3. 模板字符串

`${变量 1},{变量 2}` => `${fn()}`  {}最终会调用 toString 的方法,可嵌套

4. 字符串扩展

退出移动版