美文网首页
ES6基础姿势-关于const,let,var

ES6基础姿势-关于const,let,var

作者: MrAlexLee | 来源:发表于2019-05-27 00:48 被阅读0次

    关于const ,let,var
    用{ }包括起来的区域成为块级作用域。

    var

    1,存在变量提升,即支持变量声明预解析。举个栗子:

    console.log(a);//undefined
    var a = 2;
    console.log(b);//Uncaught ReferenceError: Cannot access 'b' before initialization
    let b = 3;
    

    上面的代码中a变量会预解析,解析如下:

    var a;
    console.log(a);
    a = 2;
    

    可以看到a变量的声明提升到了最前面。
    2,不支持块级作用域。举个栗子:

    {
        var a = 2;
        let b = 3;
    }
    console.log(a);//2
    console.log(b);//Uncaught ReferenceError: b is not defined
    

    显而易见{}对var声明的变量是不起作用的。
    3,允许重复声明。举个栗子:

    var a = 1;
    var a = 2;
    console.log(a);//2
    {
        let b = 1;
        let b = 2;
    //Uncaught SyntaxError: Identifier 'b' has already been declared
    }
    

    块级作用域内使用let声明的变量声明多次会报错重复声明。而var则会覆盖。

    let

    1,不支持变量提升,即不支持变量声明预解析,只能先声明后使用;
    2,支持块级作用域
    3,不允许重复声明

    const。这个常量声明

    1,不支持变量提升,即不支持变量声明预解析,只能先声明后使用;
    2,支持块级作用域
    3,不允许重复声明
    4,与let特性不一致的一点:必须初始化,且不允许修改
    举个栗子:

    const a ;
    //Uncaught SyntaxError: Missing initializer in const declaration
    

    可以去翻译一下:const声明丢失初始化。
    再来一个栗子:

    const a = 2;
    a =3;
    //Uncaught TypeError: Assignment to constant variable.
    

    上面的代码中console都不用写,因为执行不到下面这一步就会报错。
    以上就是对JS中声明变量和常量声明方式的区别。希望对大家有所帮助。

    相关文章

      网友评论

          本文标题:ES6基础姿势-关于const,let,var

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