这个表达式在javascript中意味着什么?

时间:2011-06-22 00:45:13

标签: javascript jquery object expression operator-keyword

$('.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');
                }

              });
            });

“||”是什么运算符是指动画函数的“完整”属性吗?

4 个答案:

答案 0 :(得分:2)

它利用了short circuit evaluation。虽然左侧是 truthy ,但它不会打扰评估右侧。

这是因为对于OR,如果一个条件是 truthy ,则不需要打扰其他条件,因为它已经知道足够的信息来回答条件。它们也从左到右进行评估。

此外,在JavaScript中,它不是返回 true false 的条件,而是返回它评估的最后一个操作数。你可以看出为什么这很有用。

答案 1 :(得分:0)

||是一个逻辑运算符 http://www.w3schools.com/js/js_comparisons.asp

它将“偏向”左侧,直到不再满足左手条件,此时它将执行右侧,这是一个执行警报的匿名函数。

答案 2 :(得分:0)

它是逻辑OR运算符,但只有在左侧表达式为false时才会计算右侧表达式。

如果左侧表达式为true,则它知道整个表达式的计算结果为true,因此它不会评估(或执行)右侧表达式。

答案 3 :(得分:0)

这个表达似乎已经淡出。

逻辑OR ||类似于else语句的if个案。如果左侧的计算结果为false,则会创建该函数并调用警报。


假设:

  • (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,则左侧只会为false。< / em>的