ES6-let命令

let命令

  • 用于声明变量,但是声明的变量只能在let命令所在的代码块内有效,

      {
       let a = 10;
       var b = 1; 
      }
    

    其中,a在代码块的外部是调用不到的。对于for循环的计数器里面,就很适合let命令。

  • 不存在变量声明
    let不像var一样有变量声明,所以变量一定要在声明后使用。

  • 暂时性死区
    只要块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不再受外境影响。

          var  tmp = 123;
          if(ture){
              tmp = "axs";//error
              let tmp;
          }
     在代码内,使用let命令声明变量之前,该变量都是不可用的。这在语法上称为“暂时性死区”。es6这样规定,主要是为了减少运行时错误,防止在变量声明前使用这个变量,从而导致意料之外的行为。暂时性死区的本质就是,只要进入当前作用域,所要使用的变量就已经存在,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用变量。
    
  • 不允许重复声明
    let不允许在相同的作用域内重复声明同一个变量。

块级作用域

  • es5只有全局作用域和函数作用域,没有块级作用域,这带来了很多不合理的场景。如:内层变量可能会覆盖外层变量;用来计数的循环变量会泄露为全局变量。

      function fl(){
         let n  = 5;
         if(ture){
             let n = 10;
         }
         console.log(n);//5
      }    
    

如果使用var,则会输出10。除此之外,es6还允许块级作用域任意嵌套。

const命令

const用来声明常量,一旦声明,他的值就不可以改变。而且,一旦声明,就必须立即被初始化,不能留到后面去赋值。他的作用域也只能在声明所在的块级作用域内有效。没有变量提升,同样存在暂时性死区,只能在声明后使用。

补充:跨模块常量:采用下面下法:
     export const A=1
原文地址:https://www.cnblogs.com/yehui-mmd/p/6284973.html