随着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块作用域

评论

暂无评论数据

暂无评论数据

目录