#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 не может этого сделать.
На самом деле я раньше не думал о том, чтобы использовать его таким образом, я бы сразу подумал, что это тоже сработает.