• 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

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

  • 相关阅读:
    [题解] uva 247 Calling Circles (floyd判联通/tarjan强连通分量)
    [总结] 最小生成树 minimum spanning tree
    [题解] uva 11865 Stream My Contest (二分+最小树形图)
    [题解] poj 3164 Command Network (朱刘算法 最小树形图(有向生成树))
    [题解] poj 3241 Object Clustering (kruskal曼哈顿距离最小生成树+树状数组)
    [BZOJ2301][HAOI2011]Problem b 莫比乌斯反演+容斥
    [BZOJ1101][POI2007]Zap 莫比乌斯反演
    [BZOJ4006][JLOI2015]管道连接 状压dp+斯坦纳树
    [BZOJ1494][NOI2007]生成树计数 状压dp 并查集
    [BZOJ1076][SCOI2008]奖励关 状压dp
  • 原文地址:https://www.cnblogs.com/luowen075/p/6161012.html
Copyright © 2020-2023  润新知