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