var与let、const的区别

一、var声明的变量会挂载在window上,而let和const声明的变量不会:

    <script>
       var a = 100;
       console.log(a,window.a);//100  100

       let b = 10;
       console.log(b,window.b);//10 undefined

       let c = 10;
       console.log(c,window.c);//10 undefined

    </script>

二、var声明变量存在变量提升,let和const不存在变量提升。

    <script>
       console.log(a); //undefined   ===>  a已声明还没有赋值,默认得到undefined值。
       var a = 100;

       console.log(b);//报错   Uncaught ReferenceError: Cannot access 'b' before initialization  找不到b这个变量
       let b = 10;

       console.log(c);//报错   Uncaught ReferenceError: Cannot access 'c' before initialization   找不到c这个变量
       const c = 10;
    </script>

三、let和const声明形成作用域


    <script>
        if(1){
            var a = 100;
            let b = 10;
            const c = 1;
        }

        console.log(a);//100
        console.log(b);//报错  b is not defined ===> 找不到b这个变量
        console.log(c);//报错  c is not defined ===> 找不到c这个变量
    </script>

四、同一作用域下let和const不能声明同名变量,而var可以

    <script>
       var a = 100;
       console.log(a);//100

       var a = 10;
       console.log(a);//10

       let a = 100;//
       let a = 10;// 报错   Identifier 'a' has already been declared   已声明标识符"a"
       console.log(a);
    </script>

五、暂存死区

   <script>
       var a = 100;
       if(1){
           //在当前块作用域存在a使用let/const声明的情况下,给a赋值10时,只会在当前作用域找变量a,而这时,还未到声明时候。
           a=10;//报错  未捕获的ReferenceError:无法在初始化之前访问'a'
           let a = 1;
       }
    </script>

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

    <script>
      const a = 100;

      const list = [];
      list[0] = 10;
      console.log(list);//[10]

      const obj =  {a:100};
      obj.name = 'apple';
      obj.a = 10000;
      console.log(obj);//{a:10000,name:"apple"};
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值