Вы не должны «условно создавать переменные».Вы можете условно присваивать значения переменной, но не создавать ее условно.
Возьмите этот пример и предположите, что он будет работать так, как вы ожидаете:
if (foo) {
var bar = 'baz';
}
alert(bar);
Так что, если foo
равно false
, тогда bar
не создается, тогда alert(bar)
вызовет ошибку о неопределенной переменной ?!Нет, это безумие.
Вот почему объявления var
будут подняты, а переменная будет существовать, просто со значением undefined
.И именно поэтому let
и const
явно ограничены областью применения блоков;они будут существовать внутри своего блока, и они не будут существовать вне их блока.Таким образом, вы никогда не попадете в ситуацию, в которой «условно созданная переменная» не существует.
Вероятно, вам нужно:
let foo;
if (bar) {
foo = 'baz';
}