let 和 coust —— ES6新语法学习心得

Posted 唐小青

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了let 和 coust —— ES6新语法学习心得相关的知识,希望对你有一定的参考价值。

## 1.let  ##

   作用:1. 将变量作用域设置为当前{},外部无法访问
        2.在同一个作用域下不允许重复定义相同变量
   
   ## 例1:let的作用域 ##  

      {
         var a= 10;
         let b =20;
       }
       console.log(a)  //10
       console.log(b)   // b is not defined 
     
       let会将{}作为其作用域,在外面不能访问

   ## 例 2: let不会造成变量泄漏 ##
   
      for(var i  =0; i < 10 ;i++){
          console.log(i)
        }
       console.log(i)   //10 
     var 声明的变量i是全局声明的变量,一直没被释放,并与想要的不符

       for(let i  =0; i < 10 ;i++){
           console.log(i)
          }
        console.log(i)  // i is not defined 

     let 声明的变量只在其作用域有效

   ## 例 3:let能解决for循环的 变量泄漏问题 ##

     var arr = [];
     for(var i  =0; i < 10 ;i++){
         arr[i] = function(){
            console.log(i)
         }
     }
      arr[6]()  //10
     i是var声明的全局变量,一直存在,所以arr里的任意项最后都是打印10
    //////////////////////////////////
     var arr = [];
     for(let i  =0; i < 10 ;i++){
         arr[i] = function(){
            console.log(i)
         }
     }
       arr[6]()  //6
     i 是let 声明的变量,只在for循环中有效,循环完后销毁

   ## 例 4 :不会存在变量提升 ##

     console.log(a);  //undefined
     console.log(b);  // b is not defined

     var a = 10;
     let b  = 20;

     所有不能在let声明前,调用该变量!!!

   ## 例 5: 封闭作用域(暂时性死区) ##

      var temp = 10;
      
      if(true){
         console.log(temp);  //temp is not defined
         let temp = 20;
      }

    ——>只要在当前作用域内用let声明的变量,就不是自由变量

    ——>*typeof 测试不一定正确*
       console.log(typeof b)  //undefine

    ——>
      let b = 20
      console.log(typeof b)  //number
 
    ——>
      console.log(typeof b)  //b is not defined
      let b = 20

   ## 例 6 不允许重复声明 ##

       let a = 10;
       var a = 5 ;  //报错

       let a = 10;
       let a = 5 ;  //报错


    
## 2.coust 声明常量 ##


   常量一般大写,规范

   ※ const NUM = 1;    //const声明的常量不允许修改

   ※ const 声明的常量必须立即赋值;

   ※ 与let一样 只能在当前块级作用域有效

      if(true){
        const max = 3
       }
       console.log(max)  //max is not defined

   ※ 对于引用类型,只能保证常量指向的地址不变,不能保证地址里的值    不变

以上是关于let 和 coust —— ES6新语法学习心得的主要内容,如果未能解决你的问题,请参考以下文章

解构赋值 —— ES6新语法学习心得

JS新语法规范ECMAScript6(ES6)基础知识及核心原理

ES6教程:let和const命令的用法

ES6语法:let和const

ES6之let和const

ES6中的let和const