http://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/ В этой ссылке есть некоторые коды, которые имеют доступ к переменной в try catch, но когда Я пытаюсь это сделать на своем сервере. Это не работает, потому что это выходит за рамки. как я могу это сделать?
try {
const foo = "bar"
} catch (e) {
console.log(e)
}
try {
console.log(foo) -> is not defined
} catch (e) {
console.log(e)
}
Автор этого сообщения явно допустил ошибку - это происходит со всеми нами.
Таким образом, объявления const
являются блочными, как говорят документы:
Константы являются блочными, как и переменные, определенные с помощью оператора let. Значение константы не может быть изменено путем повторного назначения, и его нельзя переопределить.
Поэтому вы не можете получить доступ к нему за пределами блока 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
, используя let
:
// Maybe it 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)
}
const
, как это работает?