Я пытаюсь выполнить условную проверку с помощью тернарного оператора в nodejs.
Тернарный оператор работает нормально без проблем в приведенном ниже сценарии. Он печатает текст в консоли
{true ? (
console.info("I am true")
) : (
console.info("I am not true")
)}
И то же самое не работает в сценарии ниже, и это вызывает следующую ошибку
let text = "I am true";
^^^^SyntaxError: Unexpected identifier
{true ? (
let text = "I am true";
console.info(text);
) : (
console.info("I am not true")
)}Я не могу понять, почему это ведет себя по-другому.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы не можете выполнять подобное присваивание в тернарном операторе. Вам нужно будет сделать что-то вроде:
let text = myCondition
? "I am true"
: "I am not true"
@ Think-Twice Нет, условный оператор не предназначен для замены if..elseутверждение. Используйте инструкции там, где это уместно, и операторы, где они требуются.
То, что следует за ? или : в условном (тернарном) операторе, должно быть выражение, а не операторами. Выражения оценивают значение. Присвоение переменной, как и let text = "I am true";, представляет собой утверждение, а не выражение - это что-то делает (присваивает переменной text «Я верен»), а не оценка некоторому значению.
Вы также не можете использовать точки с запятой внутри круглых скобок, когда ожидается, что эти скобки будут оценивать выражение. Если бы вы хотели В самом деле, вы могли бы вместо этого использовать оператор запятой, хотя это немного сбивает с толку:
let text;
(true ? (
text = "I am true",
console.info(text)
) : (
console.info("I am not true")
))Но условный оператор по-прежнему не подходит для этой ситуации - условный оператор оценивает для значения (это само по себе выражение). Если вы не собираетесь использовать полученное значение, вам следует использовать if/else:
let text;
if (true) {
text = "I am true";
console.info(text);
} else console.info("I am not true");Время использовать условный оператор - это когда вам нужно использовать результирующее значение, например:
const condition = true;
const text = condition ? 'I am true' : 'I am not true';
console.info(text);(Посмотрите, как результат условной операции здесь использовал - он присваивается переменной text.)
let text;
true ? (text = "I am true") : (text = "I am not true");
console.info(text);
Хорошо, но что, если я захочу реализовать там бизнес-логику?