$('.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');
}
});
});
“||”是什么运算符是指动画函数的“完整”属性吗?
答案 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>的