zoukankan      html  css  js  c++  java
  • es6关于let和const的总结

    set用于声明变量

    1.var 的一个升级版

    2.不存在变量提升

      console.log(a);//Uncaught ReferenceError: a is not defined
      let a=1;
      console.log(a);//1
      console.log(a);//undefined
      var a=1;
      console.log(a);//1

    3.会形成暂时性死区(处于同一个块级作用域里的同名变量在let声明之前使用都会报错)

     let a=2;
     console.log(a);//报错
     var a=1;
     console.log(a);

     4.在同一个块级作用域里面不允许重复声明同一个变量

       if(2>1){
               let a=1;
               var a=2;
               console.log(a)
           }
         //报错
     if(2>1){
               let a=1;
               let a=2;
               console.log(a)
           }//报错
      if(2>1){
               let a=1;
                   a=2;
               console.log(a)
           }//2

    5.块级作用域(不在同一个块里面的变量不会互相影响,①内层变量不能覆盖外层变量;②循环变量不会泄漏为全局变量;③var的for循环会发生值得覆盖,let的for循环会将每一次循环产生的值储存)

     let a=3;
           if(2>1){
               let a=1;
                if(3>2){
                    let a=2
                    console.log(a)//2
                }
                console.log(a);//1
           };
           console.log(a)//3
     for(var i=0;i<5;i++){
            var a=2;
         };
        console.log(i)//5
         var arr=[];
         for(var i=0;i<5;i++){
            function f(){
                console.log(i)
            };
            arr.push(f)
         };
       arr.forEach(function(e){
           console.log(e())
       })//5,5,5,5,5
        var arr=[];
         for(let i=0;i<5;i++){
            function f(){
                console.log(i)
            };
            arr.push(f)
         };
       arr.forEach(function(e){
           console.log(e())
       })//0,1,2,3,4

    const用来声明变量

    1.一旦声明,其值不能发生改变

    const a=1;
    a=2;//报错

    2.一旦声明变量就必须赋值

    const a;//报错
         

    3.对于复合型变量,变量名不指向数据,而是指向数据所在地址,因此const只会保证变量名指向的地址不会变,不会保证数据不变

    const obj={};
    obj.name='张三';
    console.log(obj.name)//'张三'
     const a=[];
     a.push('王炜');
     console.log(a[0])//王炜

    4.可以采用object.freeze方法将对象冻结

    const obj=obj.freeze({});
    obj.name="王炜";
    console.log(obj.name)//报错

    5.拥有块级作用域,只在声明的块里面有用

    if(true){
        const a=1;
    };
    console.log(a)//Uncaught ReferenceError: a is not defined
  • 相关阅读:
    tushare学习
    TVP-VAR模型
    时间序列分析
    python tusahre使用
    金融大讲堂-笔记
    多元GARCH模型
    方差与协方差
    代码生成器,项目更新第一版,mybatis-plus
    Springboot手动搭建项目——配置mybatis tk框架
    java基础,集合,HashMap,源码解析
  • 原文地址:https://www.cnblogs.com/douyaer/p/7648282.html
Copyright © 2011-2022 走看看