Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   return в тернарных операторах (https://javascript.ru/forum/misc/62714-return-v-ternarnykh-operatorakh.html)

innowed 25.04.2016 15:43

return в тернарных операторах
 
по этому заданию http://learn.javascript.ru/task/truncate
через обычные if'ы конечно решаемо, но вот для интереса хотел решить тернарным. Код такой
function  truncate(str, maxlength){
      (str.length>maxlength) ? return str.slice(0,17)+"..." : return str;
    }

Из гугла я понял, что в тут уже подразумевается return, т.е. получается return return str.slice(0,17)+"...". Но если я не напишу свой return,тогда из функции не вылавливается значение каким-нибудь console.log() Как быть в такой ситуации?

innowed 25.04.2016 15:52

всё, подглянул в решение, return ставить перед условием
return (str.length>maxlength) ? str.slice(0,17)+"..." : str;

bes 26.04.2016 00:22

с точки зрения спецификации, это объясняется это тем, что инструкция return никаким боком не может войти в выражение присваивания
http://es5.javascript.ru/x11.html#x11.12
Цитата:

11.12 Условный оператор ( ? : ) # Ⓣ Ⓡ Ⓖ
Синтаксис
ConditionalExpression :
LogicalORExpression
LogicalORExpression ? AssignmentExpression : AssignmentExpression


Часовой пояс GMT +3, время: 04:20.