木灵鱼儿
阅读:307
块作用域的代替方案
随着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
虽然这么写非常丑陋,但是这也是不得已的办法,事实上我们的项目在往旧设备适配的时候,往往会使用这种方式进行转换,只是我们不需要手动这么写罢了。
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿 - 有梦就能远航站点。未经许可,禁止转载。
相关推荐
函数作用域和块作用域
前言函数作用域和块作用域,并不是高出词法作用域的一种东西,可以将其理解为词法作用域的一些单元,如果词法作用域是房子,函数作用域和块作用域就是房间。函数作用域每个函数都会为其自身创建一个新的局部环境(函数作用域),属于这个函数的全部变量(函数内声明的),都只能在该环境范围内使用,当然也包括作用域嵌套。function foo(a) { var b = 2; // 一些代码 function bar() { // ... } // 更多的代码 var c = 3; } bar(); // ReferenceError 上述代码中,ba...
koa框架3 基础入门之 async、await
async和await可以理解为generator的升级,因为generator需要一个runner库来运行它,这样一来就很麻烦,所有就有了async,其用法差不多。await后面接异步操作或者同步操作,但是绝对不能为空,然后这个函数function开头接一个async用法如下:async function show() { let user = await $.ajax({ url: "xxx/api", dataType: "json" }); let items = null; ...