块作用域的代替方案
随着ES6的let和const的声明,我们终于可以创建完整,不受约束的块作用域,但是这个功能终究是新的功能,老设备怎么办呢,它不支持啊!
所以我们现在都是使用新的语法,再打垫片(polyfill)去支持新旧设备。
那么块级作用域怎么实现旧设备也能用呢?
以这段为例:
{
let a = 2;
console.log(a); // 2
}
console.log(a); // ReferenceError
分析之前说过的,with和catch,你会发现只能通过使用catch的方式实现这个功能。
try {
throw 2;
} catch (a) {
console.log(a); // 2
}
console.log(a); // ReferenceError
虽然这么写非常丑陋,但是这也是不得已的办法,事实上我们的项目在往旧设备适配的时候,往往会使用这种方式进行转换,只是我们不需要手动这么写罢了。
分类:
你不知道的JavaScript
标签:
catch块作用域
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据