美文网首页
let和const用法

let和const用法

作者: 薄荷加冰 | 来源:发表于2019-07-30 19:21 被阅读0次

    1.声明变量的关键字

    const b = 2;
    console.log(a, b);  //1 2
    
    1. let 命令
      ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
    {
      let a = 10;
      var b = 1;
    }
    
    a // ReferenceError: a is not defined.
    b // 1
    

    不存在变量提升

    let a = 1;
    

    不可重复声明

    let a = 2;//报错:Identifier 'a' has already been declared
    

    暂时性死区

    
    if (true) {
      tmp = 'abc'; // ReferenceError
      let tmp;
    }
    

    上面代码中,存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量前,对tmp赋值会报错。

    ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。

    总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。

    1. const命令
      只在声明所在的块级作用域内有效,const声明一个只读的常量。一旦声明,常量的值就不能改变。
    const PI = 3.1415;
    PI // 3.1415
    
    PI = 3;
    // TypeError: Assignment to constant variable.
    

    如果赋值为基本类型,值为只读,不可变
    改变常量的值会报错,对于const来说,只声明不赋值,就会报错

    如果赋值为引用类型值,那么属性可变

    a.name = 'zhangsan';
    delete a.age;
    console.log(a);//{name:'zhangsan'}
    

    相关文章

      网友评论

          本文标题:let和const用法

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