我怎样才能访问其他尝试块try块中的variables?
http://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/在这个链接中,有一些代码可以在try catch中访问一个variables,但是当我尝试在我的服务器这是不行的,因为它超出了范围。 我怎样才能做到这一点?
try { const foo = "bar" } catch (e) { console.log(e) } try { console.log(foo) -> is not defined } catch (e) { console.log(e) }
那篇文章的作者显然在那里犯了一个错误,这发生在我们所有人身上。
所以, const
声明是块范围的,就像文档所说:
常量是块范围的,就像使用let语句定义的variables一样。 一个常量的值不能通过重新赋值而改变,并且不能被重新声明。
这就是为什么你不能在try-catch块之外访问它。
要解决这个问题:
-
要么使用
var
而不是const:try { // When declared via `var`, the variable will // be declared outside of the block var foo = "bar" } catch (e) { console.log(e) } try { console.log(foo) } catch (e) { console.log(e) }
-
或者你可以在
try-catch
之外声明variables,使用let
:// Maybe it's clearer to declare it with let and // assign the value in the first try-catch let foo; try { foo = "bar" } catch (e) { console.log(e) } try { console.log(foo) } catch (e) { console.log(e) }
- 如何重构asynchronous重复代码
- 如何显示连续的实时更新,如Facebook的股票,meetup.com主页呢?
- 混合asynchronous操作(callback和承诺)完成后如何执行任务?
- 链接asynchronous函数Node.js bluebird mongoskin
- 围绕asynchronous写一个循环,将并行读写文件?
- Async是如何工作的,以及如何正确使用node.js(node-webkit)
- 事件循环阻塞和节点JS中的asynchronous编程
- 如何等待小溪完成pipe道? (的NodeJS)
- logging器不会根据需要保存所有日志信息 – 节点jsasynchronous