6

次のコードでは

var $next =  $active.next().length ? $active.next()
        : $('#slideshow IMG:first');

'$ active.next()。length'の部分は何も比較していないようで、条件がTrueまたはFalseであると判断される方法がわかりません。

または、さまざまな$nextが$active.next()。lengthと等しい場合、条件は真ですか?

4

5 に答える 5

11

JavaScript では、任意の式を真または偽の値に変換できるため、比較の場所で有効です。JavaScript で false となる値は次のとおりです。

  • false
  • 0
  • ""(空文字列)
  • null
  • undefined
  • NaN

この場合length、数値を参照し、評価された場合0は偽と見なされます。そうでなければ真実になる

于 2012-05-01T17:04:04.740 に答える
5

プロパティがorlengthと等しい(つまり、配列ではない) 場合、条件は になります。0undefined$activefalse

于 2012-05-01T17:03:54.507 に答える
2

$active.next().lengthがの場合true、次の要素があることを意味し$next = $active.next()ます。そうでなければ$next = $('#slideshow IMG:first')?演算子は三項演算子と呼ばれます。ショートif elseです。

于 2012-05-01T17:04:27.020 に答える
1

これは、次と同等の三項比較です。

if($active.next().length) {
    $next = $active.next();
}
else {
    $next = $('#slideshow IMG:first');
}

したがって、条件は $active.next().length に基づいており、ゼロ以上の値を返す必要があります。ゼロより大きい値はすべて、JavaScript は真、ゼロは偽として解釈します。

于 2012-05-01T17:05:17.067 に答える
0

あなたが見ているのは、If... Else... の省略形である三項演算です。タイトルで言及しました。

したがって、あなたの声明の長いバージョンは次のとおりです。

if($active.next().length){
 $next = $active.next();
}else {
 $next = $('#slideshow IMG:first');
}
于 2012-05-01T17:07:06.560 に答える