let const var的区别

let是es6中用来声名变量的,const是es6中用来声名常量(常变量)的。
let:相比于var,let不存在变量提升,且具有块级作用域({}内有效),存在暂时性死区(先赋值,再声明,报错)
const:相比于var,具有块级作用域({}内有效),且声明时必须赋值,后续不可修改。
一.块级作用域:

    // let const 具有块级作用域
    if (true) {
        let a = 1;
        var b = 2;
        const c = 3;
    }
    console.log(b)// 2
    console.log(c)// c is not defined 
    console.log(a)// a is not defined

二.暂时性死区

    /*使用let声明的变量存在暂时性死区*/
    var temp = 123;
    var abc = 'abc';
    if (true) {
        let abc = 'ABC';
        temp = 'abc';
        let temp;
        console.log(abc) //ABC
        console.log(temp) //报错,因为存在暂时性死区。因为temp是先赋值再用let声明
    }
    console.log(abc) //abc

三.没有变量提升

        /* 使用let声明的变量没有变量提升 */
        console.log(c) //undefined
        console.log(d) //Cannot access 'd' before initialization
        var c = 10;
        let d = 20;

四.const声明时必须赋值
如下所示,a是先赋值变量b,然后再通过var声明b并赋值5,c是在b声明后赋值b变量的。
因为var声明的b会有变量提升。
所以先是var b
然后按照顺序执行
const a = b
b = 5
const c = b
所以a是undefined,b是5。

    // const声明时必须赋值
    const a = b;
    var b = 5;
    const c = b;
    console.log(a)//undefined
    console.log(c)//5
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陈梵阿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值