ES6中var let const 的区别 在线解答

1. var声明变量会挂载window上,二let和const声明的变量不会


   var a = 1;
   console.log(window)
   
   const a = 1 ;
   console.log(window.a)
   
   
   let a = 1 ;
   console.log(window.a)
   

 2. var声明变量存在变量提升,let和const不存在变量提升 


   console.log(a)
   var a = 1 ;


   console.log(b)
   let b = 1 ;

   console.log(c)
   const c = 1 ;

 3. let 和 const 声明形成块作用域


   if(1){
    var a = 1;
   }
   console.log(a)
   

   if(1){
    let a = 1;
   }
   console.log(a)

4.同一作用域下let和 const 不能声明同名的变量 var可以

 if(1){
    const a = 1;
   }
   console.log(a)
   

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

   const a = 1 ;
   const a = 2 ;
   console.log(a )

 5.暂时性死区 

var a = 1;
     {
        a = 2 ; 
        console.log(a)
     }
     let a = 1;
     {
        console.log(a)
        let a = 2;
       //在当前块作用域中存在a使用let/const声明的情况下,给a赋值10时,只会在当前作用域找变量a,
     //而这时,还未到声明时候,所以控制台Error:a is not defined
     }

6.const属于常量 “常量”的广义概念是:‘不变化的量’,对于‘常量’的通俗比喻——“如同大山不被轻而易举地改变”!
    const 如何做到变量在声明初始化之后不允许改变的?其实 const 其实保证的不是变量的值不变,而是保证变量指向的内存地址所保存的数据不允许改动。此时,你可能已经想到,简单类型和复合类型保存值的方式是不同的。是的,对于简单类型(数值 number、字符串 string 、布尔值 boolean),值就保存在变量指向的那个内存地址,因此 const 声明的简单类型变量等同于常量。而复杂类型(对象 object,数组 array,函数 function),变量指向的内存地址其实是保存了一个指向实际数据的指针,所以 const 只能保证指针是固定的,至于指针指向的数据结构变不变就无法控制了,所以使用 const 声明复杂类型对象时要慎重。

const  arr = [1,20,55,5,8,12]
     arr.push(58)
     console.log(arr)

    /* const用法
     1,一旦声明必须赋值,不能使用null占位
     2,声明后不可以修改
     3,如果声明的是复合类型数据,可以修改其属性*/

  今日总结!不喜欢或者是写的有问题请轻喷!如有大神看出问题,请评论区留言谢谢!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值