ES6之 let,const,var的区别

let,const,var的区别
  • let

    • let不存在变量提升

      使用let声明变量,必须遵循“先声明,后使用”的原则。否则报错。但如果是var声明的变量,则不会报错。

    • let声明的变量,存在块级作用域

      let声明的变量只在所在声明的代码块有效。块级作用域由{}包括,if语句和for语句里面的{}也属于块级作用域

    • let不允许在同一作用域里进行重复声明同一个变量

      在同一个作用域里,如果使用var进行声明变量,后面会覆盖前面的 。

    • 暂时性死区(TDZ)

      • 在代码块内,使用let声明变量之前,该变量都是不可以使用的只要在同一个作用域内存在let命令,它所声明的变量就”绑定”在这个作用域内,不管外部有没有声明。
      • 暂时性死区的本质就是,只要一进入当前作用域,所使用的变量就已存在,但是不可获取,只有等到声明变量的哪一行代码的出现,在可以获取和使用该变量。
      let b = 1;
      function test() {
          console.log(b);  //1
          let a = 2;
      }
      test()
      
      let b = 1;
      function test() {
          console.log(b);  //not defined 
          let b = 2;
      }
      test()
      /*说明:由于存在全局变量b,但是块级作用域内let又声明了一个局部变量b,同一个作用域内,不能重复声明同一个变量,所以在let声明前,对b进行赋值则报错*/
      
  • const

    • const 声明一个只读的常量。一旦声明,常量的值就不能改变。
    • const 一旦声明变量,就必须立即初始化,不能留到以后赋值。对于 const 来说,只声明不赋值,就会报错
    • const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。
  • var

    • 变量提升(无论声明在何处,都会被提至其所在作用于的顶部)
    • var 声明的变量会挂载在window上,而 letconst 声明的变量不会
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仙女_宝宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值