JavaScript

Можно ли в javascript не использовать условный оператор '?' и полностью заменить его if`ами?

Например: можно ли заменить этот код:

let name = prompt('Введите имя', '');
let age = prompt('Введите свой возраст', '');

let p =(age < 18) ? `Ты не проходишь, ${name}`:
(age < 100) ? `Проходи, ${name}`: `Ты как бляtь смирительную рубашку снял? `;
alert(p);

На этот:

let name = prompt('Введите имя', '');
let age = prompt('Введите свой возраст', '');

if (age < 18) {
alert(`Ты не проходишь, ${name}`);
} else if (age > 18 & age <100){
alert(`Проходи, ${name}`);
} else {
alert(`Ты как бляtь смирительную рубашку снял? `);
}
Не можно, а нужно...

Тернарный чаще всего используют там, где всего одно условие и два значения.
А цепочки из серии (...) ? (...) : (...) ? (...) : (...) ? (...) : (...) только ухудшает читаемость кода. Если и использовать его в длинной цепочке, то хотя бы так, напрмер:

let p =
  ( age < 18 ) ? `Ты не проходишь, ${name}` :
  (age < 100) ? `Проходи, ${name}` :
                        `Ты как смирительную рубашку снял? `;
Олег Метельков
Олег Метельков
62 360
Лучший ответ
Степан Днак Тернарный оператор прекрасен. Он не может ничего ухудшать. Форматировать конечно необходимо. Мне нравится так:

let p = age < 18 ? `Ты не проходишь, ${name}`
: age < 100 ? `Проходи, ${name}`
: `Ты как смирительную рубашку снял? `;

К сожалению, автоматические форматеры иногда портят такой стиль, пытаясь отразить вложенность.
Разумеется, можно. Фактически, тернарная операция - это синтаксический сахар, нужный только для того, чтобы кодер мог нажать на несколько клавиш меньше.

Например, в Go тернарную операцию выкинули - наряду с другими C-style излишествами.

age > 18 НЕ нужно:

if (age < 18) {
alert(`...`);
} else if (age <100) {
alert(`...`);
} else {
alert(`...`);
}
Полностью заменять его if'ами не надо. Но я его применяю только с одним условием. Тогда это удобно читать. Особенно если короткое условие и короткие значения. А писать весь код в одну длинную строку совершенно не улучшает читаемость кода.
Миша Москалюк
Миша Москалюк
75 558
Степан Днак Тернарный оператор не обязательно писать в одну строку. Он отлично смотрится многострочным. Проблема только в том, что автоматические форматёры не так как форматируют как хотелось бы, когда несколько условий.

let p = age < 18 ? `Ты не проходишь, ${name}`
: age < 100 ? `Проходи, ${name}`
: `Ты как смирительную рубашку снял? `;
Можно. Но учитывай, что избегая части актуальных возможностей языка, ты сильно рискуешь вырасти в зашоренного деда, который обсирает все что не смог осилить сам.
Каждый инструмент имеет свое предназначение, и безусловно глупо забивать гвозди дрелью... как и сверлить молотком. То же самое и с синтаксисом / операторами. Использование только ифа - так же плохо, как неуместное использование тернарника.
Умение делать разумный выбор, использовать подходящие возможности для решения различных микрозадач - это один из ключевых навыков настоящего специалиста своего дела.
Tima Timurov
Tima Timurov
72 660
Используй условные операторы
Олег Урбан
Олег Урбан
94