Логические операторы jQuery для управления потоком вместо использования оператора if

#javascript #jquery

#javascript #jquery ( jquery )

Вопрос:

По какой-то причине я не могу заставить сжатый синтаксис управления потоком работать с jQuery. Следующее выдает ошибку:

 $(this).hasClass('expanded') amp;amp; return
 

В то время как эта более длинная версия работает нормально:

 if ($(this).hasClass('expanded')) { return}
 

Есть какие-нибудь идеи, почему первый выдает ошибку?

Комментарии:

1. Эти две линии очень разные, и лично я никогда не видел первую.

Ответ №1:

Вы не можете использовать логическое И с таким return оператором. Однако я не вижу причины, по которой вы бы так поступили. Вы могли бы просто вернуть логический результат непосредственно из функции

 return $(this).hasClass('expanded');
 

Комментарии:

1. Я не заинтересован в возврате результата, я просто хочу, чтобы остальная часть кода в блоке не выполнялась, если условие истинно. Я попробовал это, и это не сработало для меня, но все равно спасибо за ваш ответ, я думаю, я не могу использовать этот синтаксис с возвратом, как вы говорите

2. @techjacker: ну, либо ваш пример плохо выбран, либо я его не понимаю. Дело в том, что каждая функция в ECMAScript возвращает значение. Если не указано, возвращается undefined значение. Таким образом, проверка логического выражения для вызова return или нет не имеет никакого смысла.

Ответ №2:

Я думаю, вы могли бы сэкономить на {} :

 if($(this).hasClass('expanded')) return;
 

Комментарии:

1. спасибо, что сэкономил немного времени на вводе, на самом деле его можно сделать еще короче, удалив точку с запятой в конце if($(this).hasClass(‘expanded’)) return

Ответ №3:

Каждая часть логического логического оператора должна что-то вычислять. return не может этого сделать.

На самом деле я раньше не думал о том, чтобы использовать его таким образом, я бы сразу подумал, что это тоже сработает.