这个表达式在javascript中是什么意思

What does this expression mean in javascript?

本文关键字:是什么 意思 javascript 表达式      更新时间:2023-09-26
$('.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函数的"complete"属性中的"||"运算符是什么意思?

它利用短路评估。虽然左手边是真的,但它不会麻烦评估右手边。

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

此外,在JavaScript中,它不是返回truefalse的条件,而是返回它计算的最后一个操作数。你可以看到为什么这是有用的。

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

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

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

如果左边的表达式是true,那么它知道整个表达式的计算结果为true,所以它不需要计算(或执行(右边的表达式。

该表达式似乎是一个淡入。

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


给定:

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

在这种情况下,将分配函数声明:

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

请注意,"complete"属性不会包含值,只是一个函数定义,您需要将complete调用为类似complete()的东西。如果左边是false,那么要调用的函数必须用括号括起来,然后调用它:

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

注意:只有当某些东西未定义(我认为(,或者i等于rows*cols -1时,左手边才会为false