次のコードでは
var $next = $active.next().length ? $active.next()
: $('#slideshow IMG:first');
'$ active.next()。length'の部分は何も比較していないようで、条件がTrueまたはFalseであると判断される方法がわかりません。
または、さまざまな$nextが$active.next()。lengthと等しい場合、条件は真ですか?
次のコードでは
var $next = $active.next().length ? $active.next()
: $('#slideshow IMG:first');
'$ active.next()。length'の部分は何も比較していないようで、条件がTrueまたはFalseであると判断される方法がわかりません。
または、さまざまな$nextが$active.next()。lengthと等しい場合、条件は真ですか?
JavaScript では、任意の式を真または偽の値に変換できるため、比較の場所で有効です。JavaScript で false となる値は次のとおりです。
false
0
""
(空文字列)null
undefined
NaN
この場合length
、数値を参照し、評価された場合0
は偽と見なされます。そうでなければ真実になる
プロパティがorlength
と等しい(つまり、配列ではない) 場合、条件は になります。0
undefined
$active
false
$active.next().length
がの場合true
、次の要素があることを意味し$next = $active.next()
ます。そうでなければ$next = $('#slideshow IMG:first')
。?
演算子は三項演算子と呼ばれます。ショートif else
です。
これは、次と同等の三項比較です。
if($active.next().length) {
$next = $active.next();
}
else {
$next = $('#slideshow IMG:first');
}
したがって、条件は $active.next().length に基づいており、ゼロ以上の値を返す必要があります。ゼロより大きい値はすべて、JavaScript は真、ゼロは偽として解釈します。
あなたが見ているのは、If... Else... の省略形である三項演算です。タイトルで言及しました。
したがって、あなたの声明の長いバージョンは次のとおりです。
if($active.next().length){
$next = $active.next();
}else {
$next = $('#slideshow IMG:first');
}