Что означает это выражение в JavaScript? - PullRequest
2 голосов
/ 22 июня 2011
$('.blocks','#grid').each(function (i) {
              $(this).stop().css({opacity:0}).delay(100).animate({
                'opacity': 1
              }, {
                duration: 2000,
                complete: (i !== row * cols - 1) ||
                function () {
                  alert('done');
                }

              });
            });

Что означает "||" означает оператор в свойстве «завершить» функции animate?

Ответы [ 4 ]

2 голосов
/ 22 июня 2011

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

Это связано с OR, если одно условие является правдивым ему не нужно беспокоиться о дополнительных условиях, потому что он уже знает достаточно информации, чтобы ответить на условие.Они также оцениваются слева направо.

Кроме того, в JavaScript вместо условия, возвращающего true или false , возвращается последний операнд, который он оценил.Вы можете понять, почему это полезно.

0 голосов
/ 22 июня 2011

Выражение выглядит как затухающее.

Логическое ИЛИ || похоже на случай else оператора if.Если левая сторона оценивается как ложное, функция создается и вызывается предупреждение.


Дано:

  • (i !== row * cols - 1) || function () { alert('done');  }
    

Объявление функции будет назначено в этом случае:

  • false || function (){ alert('done'); }
    

Обратите внимание, что свойство complete не будет содержать значение, просто определение функции, вынужно было бы назвать завершённым что-то вроде complete().Для вызова функции, если левая сторона равна false, вам необходимо заключить ее в скобки и вызвать ее:

  • complete: (i !== row * cols - 1) || (function () {alert('done');})()
    

Примечание: Левая сторона будет ложной, только если что-то не определено (я думаю) или если i окажется равным rows*cols -1.

0 голосов
/ 22 июня 2011

Это логический оператор ИЛИ, но он вычисляет правое выражение, только если левое выражение ложно.

Если левое выражение равно true, то оно знает, что все выражение полностьюоценивается как истина, поэтому он не мешает оценить (или выполнить) выражение правой руки.

0 голосов
/ 22 июня 2011

|| логический оператор http://www.w3schools.com/js/js_comparisons.asp

он будет «отдавать предпочтение» левой стороне до тех пор, пока условие левой руки больше не будет выполнено, и в этот момент он выполнит правую сторону, которая является анонимной функцией, которая выполняет предупреждение.

...