Задать вопрос
@Melagomania

Почему не работает return с тернарным оператором «?»?

Всем привет! Когда пишу условие через if...else, return работает как положено, но если переписать то же условие используя "?", код перестает работать. Консоль хрома по этому поводу говорит "Unexpected token return". Хочу понять в чем проблема и чем не подходит return. Вроде как очевидный код в две строки, но работать не хочет. Код ниже. Спасибо)
function moreThanTen(arr) {
    // if (arr.length > 10) {
    //     return 1;
    // }
    // else if (arr.length == 10) {
    //     return 0;
    // }
    // else return -1;


    (arr.length > 10) ? return 1 :
    (arr.length == 10) ? return 0 : return -1;
}
  • Вопрос задан
  • 8905 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Потому что return это не «выражение» (expression), а «инструкция» (statement), а в тернарном операторе должны быть выражения.

Инструкции не могут стоять там, где ожидается выражение. Например нельзя написать var x = if (...) или func(while (...))

https://ru.hexlet.io/courses/introduction_to_progr...
2ality.com/2012/09/expressions-vs-statements.html
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
artemky
@artemky
function moreThanTen(arr) {
    return (10 == 10) ?  0 :  -1;
}
moreThanTen()
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
Вот вы берете простейшую задачу и выворачиваете жуткой логикой, тернарными операторами и прочее.
Давайте угадаю - вам нужно возвращать "меньше 0" если arr.length меньше 10, "0" если они равны и "больше 0" если arr.length больше 10. Вы пилите тернарный оператор один в другом, а можно сделать просто return (arr.length -10) и все.
Ответ написан
Negwereth
@Negwereth
lvivcss.com.ua
ES6
var moreThanTen = ({length}) => length > 10 ? 1 : (length < 10 ? -1 : 0);


ES5
function moreThanTen(array) {
	let length = array.length;
	return length > 10 ? 1 : (length < 10 ? -1 : 0);
}
Ответ написан
Комментировать
@k1ns3
Frontend dev
return (arr.length > 10 ) ? 1 : arr.length === 10) ? 0 : -1;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы