美文网首页
Es6语法----声明

Es6语法----声明

作者: Sujz | 来源:发表于2017-12-21 17:45 被阅读10次

    Es6 在 Es5 的基础上,新增了4种 声明方式,一共有6种:

    1. var  2.function  3.let  4.const  5.import  6.class

    今天学习了 Let 和 const ,后续会补充其余新增的2种;

    Let(变量声明):

    1. 块级作用域:  let 声明的变量只有自己所在的 作用域 能够获取和调用;

    2. 关闭了 变量提升, 使代码运行更合理

    3. 暂时性死区:  在let作用域内,let的所有变量获取和调用必须在,let声明之后才可以获取和调用;

    4.不允许重复声明

    Const(常量声明):

    1. 块级作用域:  const 声明的变量只有自己所在的 作用域 能够获取和调用;

    2. 关闭了 变量提升, 使代码运行更合理

    3. 暂时性死区:  在const作用域内,const的所有变量获取和调用必须在,const声明之后才可以获取和调用;

    4.不允许重复声明

    5.const声明的常量不能更改(地址);

    本质: const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。

    例如:

    const obj = {};

    obj.name = "Sujz"; // 新增属性成功

    obj = {}; // 报错 (因为,改变了 地址 )

    如果想将对象冻结(即,不能新增属性):

    const foo = Object.freeze({});

    foo.prop = 123; // 常规模式,这行不起作用,即 无法改变 foo 的值,也无法新增 foo 的属性,并且,在严格模式下,还会报错;

    除了冻结对象本身,对象的属性也该冻结:

    var constantize = (obj) => {

      Object.freeze(obj);

      Object.keys(obj).forEach( (key, i) => {

        if ( typeof obj[key] === 'object' ) {

          constantize( obj[key] );

        }

      });

    };

    相关文章

      网友评论

          本文标题:Es6语法----声明

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