2011-11-05 16 views
0

私はこのコードを見ていて、いくつか質問がありました。私はjqueryの基本マニュアルとgoogleでいくつかの掘り下げをしましたが、簡単な答えは見つかりませんでした。jqueryの構文を理解しようとしています

これは私を打つまず最初に、文のW/Oブラケットた場合、彼はインラインになり、それはクールだと私はあなたがそれを行うことができます知らなかったということである完全なコード

function slideSwitch() 
{ 
    var $active = $('#slideshow IMG.active'); 

    if ($active.length == 0) $active = $('#slideshow IMG:last'); 

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


    $active.addClass('last-active'); 

    $next.css({opacity: 0.0}) 
     .addClass('active') 
     .animate({opacity: 1.0}, 1000, function() { 
      $active.removeClass('active last-active'); 
      }); 
} 

です。しかし、良いコーディング基準に従っているのか、それとも重要ではないのでしょうか?

また、var $ nextを宣言する次の行。私はそれの中でそのような種類の条件を持つ変数を見たことはありません。私は彼が$ active.next()を入力し、長さが$ active.next()がスライドショーの最初のimgになることを言っていると思います。私は、オペランドが何を意味するのかよく分かりません。

洞察?

答えて

3

私を打つ最初の事は、私はあなたがかっこ{}を意味だと思うの文W/Oブラケット

場合、彼はインラインになるということです。

これはすばらしく、私はあなたがそれを行うことができるかどうかわかりませんでした。しかし、良いコーディング基準に従っているのか、それとも重要ではないのでしょうか?

一般的に悪いコードスタイルとみなされます。あとで来て、ifブランチにコードを追加して、中括弧のない構文が使用されていることに気付かないのはあまりにも簡単です。

JSLintはそれについて文句を言います。

また、次の行はvar $ nextと宣言します。私はそれの中でそのような種類の条件を持つ変数を見たことはありません。

これはconditional (ternary) operatorです。

return condition ? expr1 : expr2 

と同等です:

if (condition) { 
    return expr1; 
} else { 
    return expr2; 
} 

これのすべてではJavaScriptです。これはjQueryライブラリとは関係ありません。

+0

はjqueryライブラリを使用しているセレクタではありませんか? – Brodie

+0

@Brodie - あなたはセレクタについて質問していませんでした。 – Quentin

2

あなたが条件文を使用して復習を必要とするように思える:

  1. 標準条件がtrue /ゼロ以外に評価された文を実行した場合。ステートメントは単なるステートメントでも、大括弧内の複数のステートメントでもかまいません。
  2. ternary conditional expressionは、割り当ての目的で使用されます。それは条件をとり、それを評価し、それが真/非ゼロと評価される場合、?の後の最初の式を返します。そうでなければ、:の後に式を返します。

通常、文が次の行にプッシュされ、読みやすいようにインデントされていますが、if文を1つだけ使用すると意味があります。

可読性に挑戦するネストされた式が含まれていない限り、三項関係を使用することはOKです。