美文网首页
<<深入理解ES6>>记:一

<<深入理解ES6>>记:一

作者: 闫小兀 | 来源:发表于2017-11-13 22:26 被阅读15次

    ECMAScript之路

    1.新增的语言特性涉足甚广, 包括: 模块,类,类继承,私有对象成员,可选类型注释等特性

    第1章 块级作用域绑定

    1.块级作用域(亦被称为词法作用域) 存在于:

    • 函数内部
    • 块中, 即{}之间的区域

    2.let声明不会被提升(Hoisting)

    3.通过const声明的常量必须进行初始化;
    与其他语言中的常量不同的是,JavaScript中的常量如果是对象,则对象中的值可以修改.

    4.JavaScript引擎在扫描代码发现变量声明时,要么将它们提升至作用域顶部(遇到var声明),要么将声明放大TDZ中(遇到let和const)

    注释: TDZ(temporal dead zone),临时死区

    栗子一:
        if(codition) {
            console.log(typeof value);     // 引出错误
            let value = 'blue';
        }
    
    栗子二:
        console.log(typeof value);
        if(conditon) {
            let value = 'blue';
        }   
    

    5.循环中的块级作用域绑定

    • 为解决这个问题, 开发者在循环中使用立即执行函数表达式(IIFE),以强制生成计数器变量的副本
    • 使用let声明能够更快速的解决(在for,for-in,for-of循环情况一样,生成变量副本)
    • 循环中使用const,普通for会抛出错误(更新循环变量); 在for-in,for-of不会出错,因为每次迭代中不会修改已有绑定,而是会创建一个新绑定

    6.全局块作用域绑定
    如果不想为全局对象创建属性,则使用let和const要安全很多

    var item = 'hello';
    console.log(window.item === item);  // true
    
    let item = 'hello';
    console.log(window.item === item);  // false
    

    7.当前使用块级绑定的最佳实践是: 默认使用const, 只在确定需要改变变量的值时使用let

    相关文章

      网友评论

          本文标题:<<深入理解ES6>>记:一

          本文链接:https://www.haomeiwen.com/subject/yzptvxtx.html