пытаясь выяснить синтаксис JQuery - PullRequest
0 голосов
/ 05 ноября 2011

Я смотрел на этот код и у меня было несколько вопросов. Я покопался в руководстве по основам jquery и в Google, но не нашел простого ответа.

это полный код

function slideSwitch()
{
    var $active = $('#slideshow IMG.active');

    if ( $active.length == 0 ) $active = $('#slideshow IMG:last');

    var $next =  $active.next().length ? $active.next()
    : $('#slideshow IMG:first');


    $active.addClass('last-active');

    $next.css({opacity: 0.0})
         .addClass('active')
         .animate({opacity: 1.0}, 1000, function() {
             $active.removeClass('active last-active');
          });
}

Первое, что меня поражает, - это то, что он делает встраиваемый оператор без скобок, это круто, и я не знал, что вы могли бы это сделать. Однако это то, что следует хорошим стандартам кодирования или это не имеет значения?

Также следующая строка, где он объявляет var $ next. Я никогда не видел переменную с такими условиями. Я предполагаю, что он говорит либо input $ active.next (), и если длина равна 0, то $ active.next () будет первым img в слайд-шоу. Я не совсем уверен, что означают операнды.

Любое понимание?

Ответы [ 2 ]

3 голосов
/ 05 ноября 2011

Первое, что меня поражает, это то, что он делает встроенное выражение if без скобок

Я думаю, вы имеете в виду фигурные скобки {}.

это круто, и я не знал, что ты сможешь это сделать. Тем не менее, это то, что следует хорошим стандартам кодирования или это не имеет значения?

Обычно считается плохим стилем кода. Слишком легко прийти позже, чтобы добавить еще немного кода в ветку if и не понимать, что использовался синтаксис без скобок.

JSLint будет жаловаться на это.

Также следующая строка, где он объявляет var $ next. Я никогда не видел переменную с такими условиями.

Это условный (троичный) оператор .

return condition ? expr1 : expr2

эквивалентно:

if (condition) {
    return expr1;
} else {
    return expr2;
}

Все это JavaScript. Это не имеет ничего общего с библиотекой jQuery.

2 голосов
/ 05 ноября 2011

Похоже, вам нужно освежить в использовании условных операторов:

  1. Стандартное выражение, если выполняется оператор, когда условие оценивается как истинное / ненулевоеОператор может быть просто оператором или несколькими операторами в скобках.
  2. A троичное условное выражение используется для целей присваивания.Он принимает условие, оценивает его и, если оно оценивается как true / отличное от нуля, возвращает первое выражение после?.Если нет, он возвращает выражение после:.

Использование оператора if с одним оператором имеет смысл, хотя этот оператор обычно переносится на следующую строку и имеет отступ для удобства чтения.1012 * Использование троичного, если все в порядке, если только оно не содержит вложенных выражений, затрудняющих чтение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...