Как использовать оператор if для объявления новой переменной с ES6?JavaScript - PullRequest
0 голосов
/ 28 мая 2018

Как я могу опционально объявить переменную, используя let или const?Например, можно сделать:

if (variableNotMade) {
  var makeVariable
}

Но как этого достичь, используя let или const вместо var?
Подобный пост здесь показывает, что можно сделать:

let makeVariable = variableNotMade ? foo : bar

Хотя этот подход действительно работает, только если у вас есть else.
IsЕсть ли подходящий способ для достижения этого или следует использовать другой подход?

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

На мой взгляд, не существует такой вещи, как необязательное объявление .Вы объявляете переменную, и тогда присваивание может быть необязательным, если вы можете назвать его так (лучше сказать условно).Наконец, проверьте на нулевое значение.

Также let const и var - это разные вещи: let имеет область видимости блока, const только для чтения и область видимости блока и, наконец, var имеетсфера действия.Существует гораздо больше вопросов, связанных с их безопасным использованием, потому что, эй, это JS, но это резюме.

0 голосов
/ 28 мая 2018

Вы не должны «условно создавать переменные».Вы можете условно присваивать значения переменной, но не создавать ее условно.

Возьмите этот пример и предположите, что он будет работать так, как вы ожидаете:

if (foo) {
    var bar = 'baz';
}

alert(bar);

Так что, если foo равно false, тогда bar не создается, тогда alert(bar) вызовет ошибку о неопределенной переменной ?!Нет, это безумие.

Вот почему объявления var будут подняты, а переменная будет существовать, просто со значением undefined.И именно поэтому let и const явно ограничены областью применения блоков;они будут существовать внутри своего блока, и они не будут существовать вне их блока.Таким образом, вы никогда не попадете в ситуацию, в которой «условно созданная переменная» не существует.

Вероятно, вам нужно:

let foo;

if (bar) {
    foo = 'baz';
}
0 голосов
/ 28 мая 2018

Если вам не нужен блок else, вы можете сделать это

let makeVariable = variableNotMade && foo

, но для makeVariable будет установлено значение false.Так что, если это не то, что вы конкретно хотите, вы должны использовать метод deceze ♦.

...