一文搞懂let和const关键字ES6与块作用域 (作用域与闭包 - Ch3.4.3)

文章介绍了ES6为解决全局变量污染和变量作用域问题引入的let和const关键字。let允许在块级作用域内声明变量,而const则用于创建不可变的常量。同时,文章提到了JavaScript中块作用域的特殊性,如if和for不会生成块作用域,而try/catch在ES3中才会创建块作用域。
摘要由CSDN通过智能技术生成

引入let关键字

首先看一段代码:

var foo = true;
if (foo) {
    var bar = boo * 2;
    bar = something(bar);
    console.log(bar);
}

与C++和Java之类的语言不同,if块中的变量bar并不会随着if结束消亡,var关键字在这里声明了一个全局变量,为了解决这个问题ES6引入了let关键字。

var foo = true;
if (foo) {
    let bar = boo * 2; // use let here
    bar = something(bar);
    console.log(bar);
}

引入const关键字

constlet关键字引入的原因相仿,区别是const创建的值是固定的,任何修改他的操作都是非法的。

var foo = true;
if (foo) {
    var a = 2;
    const b = 3;
    
    a = 3; // 可以
    b = 4; // 不可以
}

关于块作用域

简单理解,一般来说 { ... } 这样的括号就会生成一个块作用域气泡,但JavaScript中的if和for并不会这样。

在ES3中使用try/catch结构会生成块作用域,在ES6才引入了let和const关键字来解决这个问题。

需要注意的是这个和函数闭包的概念需要区分开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值