Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   continue в z = x ? x : continue; (https://javascript.ru/forum/misc/29673-continue-v-z-%3D-x-x-continue%3B.html)

beard 06.07.2012 18:53

continue в z = x ? x : continue;
 
Почему
var name = names[i] ? names[i] : continue;

Не хочет работать так как нужно, т.е. пропустить итерацию если false, может и хочет но бросает синтаксическую ошибку :-E

Как же тогда его туда затолкать?

devote 06.07.2012 18:57

var name = names[i];
if ( !name ) continue;

B@rmaley.e><e 06.07.2012 19:14

Не надо его туда заталкивать. Используйте if, не насилуйте тернарный оператор.

beard 06.07.2012 19:24

Цитата:

Сообщение от B@rmaley.e><e
Не надо его туда заталкивать. Используйте if, не насилуйте тернарный оператор.

Ок. Дык уже не первый раз хочу изнасиловать этот тернарный оператор таким способом, а он морозится.
Решил уже спросить на форуме wtf! :)

Aetae 06.07.2012 21:24

continue ничего не возвращает, его кабэ вообще нет, потому js видит после : пустоту и ругается.

Drimogemon 06.07.2012 23:13

сч его ты вообще взял что ты можешь испрльзовать тернарный оператор как if ????

beard 06.07.2012 23:25

Цитата:

Сообщение от Drimogemon
сч его ты вообще взял что ты можешь испрльзовать тернарный оператор как if ????

А кто мне это запретит?:lol:

Drimogemon 06.07.2012 23:36

Цитата:

Сообщение от beard
А кто мне это запретит?

тот кто запретил до этого

beard 07.07.2012 00:03

На кону + в карму.

Напоминаю вопрос:
Цитата:

Почему некоторые форумчане считают что нельзя испрльзовать тернарный оператор как if ????

Небольшая подсказка: никто не может запретить его использовать.

Цитата:

Сообщение от Drimogemon
тот кто запретил до этого


И это неправильный ответ, следующий участник вращайте барабан.

oneguy 07.07.2012 00:35

Цитата:

Сообщение от beard
Почему некоторые форумчане считают что нельзя испрльзовать тернарный оператор как if ????

Потому, что в тернарном операторе операнды могут быть только выражениями и не могут содержать, например, continue. А почему так - потому что так написано в спецификации.

melky 07.07.2012 06:40

континью - это не выражение, оно ничего не возвращает, а тернарный иф всегда что-то должен возвращать.

Drimogemon 07.07.2012 06:42

oneguy, которая этим самым запрещает реализовывать в нем функционал if и делает невозможным его использование как if... иии это ПРАВИЛЬНЫЙ ОТВЕТ! и ваше очко не уходит в зрительный зал!

Deff 07.07.2012 13:12

ксать eval('continue') тоже по ходу не работает(хотя в полной связке с for - проблем не вызывает
оч похоже, что при трансляции-компиляции, данные операторы(break еще) - как свойство именно данного цикла, и динамического возникновения не допускают, т.к теряется привязка

B@rmaley.e><e 07.07.2012 13:16

Для пущей убедительности ссылочки на спецификацию:
Тернарный условный оператор ( ? : ) согласно его синтаксису принимает второй и третий аргументы AssignmentExpression, являющимися также Expression.
continue является ContinueStatement, который в свою очередь является Statement.
Statement не может являться Expression, т.к. Expression может являться Statement (см. ExpressionStatement, который является Statement).


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