Синтаксис не позволяет let
, const
или var
появляться в этой позиции.Но вы можете просто определить переменную (без инициализации) и затем сделать if
:
let n;
if (n = SomeFunc()) {
// n is truthy
} else {
// n is falsy
}
Если вы хотите ограничить область действия этой переменной только этим if
, то поместите ее вblock:
// other code...
{
let n;
if (n = SomeFunc()) {
// n is truthy
} else {
// n is falsy
}
}
// other code...
Конечно, если ваша функция не имеет другого кода, тогда дополнительный блок не требуется: блок функции будет применяться.
Многие не согласятся с вами, что назначение внутриif
условие clean .Лучшая практика - избегать таких побочных эффектов в состоянии, хотя мнения по этому вопросу расходятся.Тем не менее, это не займет больше символов, чтобы написать это следующим образом, и это выглядит мне чище:
{
let n = SomeFunc();
if (n) {
// n is truthy
} else {
// n is falsy
}
}
В качестве выражения функции
Еще один подход заключается в использовании немедленно вызванного выражения функции, которому вы указываете возвращаемое значение функции в качестве аргумента:
(n => {
if (n) {
// n is truthy
} else {
// n is falsy
}
})(SomeFunc());