• ベストアンサー

javascript の?について

javascriptの公開されているライブラリを利用して、 画像のスライド等に挑戦しました。 ソースコードを見てみようとしたのですが、 一部分ですが、 if(this.r){n=d==1?n==this.l?0:n:n<0?this.l-1:n} 上記のようなコードが見つかりました。 ソースの中に記述されている ? とはなんでしょうか。 googleで調べようとしましたが「?」をうまく調べることができませんでした。 よろしければご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • tracer
  • ベストアンサー率41% (255/621)
回答No.2

A=(X)?B:C 上の式は、次の式と意味合いとしては同じです。 if(X){  A=B; }else{  A=C; } Xが真ならBをAに代入。 Xが偽ならCをAに代入。 場合によっては、ifより高速に処理できることもあるそうです。 個人的には、ifより記述がシンプルなので、よく使います。

kureakai
質問者

お礼

情報ありがとうございます。 わかりやすく説明して頂きありがとうございました。 理解することができました。

その他の回答 (1)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

これは条件演算子と呼ばれているものです。 ?と:とを合わせてそう呼ばれます。 ?の前の条件式がtrueならば?と:の間の値を、falseならば:以降の値をとります。 具体的に言うと、 x = n==1 ? 1 : 2; という式で、nの値が1ならばxは1に、それ以外の場合はxは2になります。 ご質問の式はこれが二重に使用されています。分かりやすく外側の条件演算子の各項を括弧でくくると n = (d==1)?(n==this.l?0:n):(n<0?this.l-1:n) となります。 これ以外のコードが分からないのでこのコードが何を意味するのかはよく分かりませんが、なにやらnの値が範囲外に出ないように調整しているように思えます(dが何を表す値か分かれば……)。

kureakai
質問者

お礼

情報ありがとうございます。 わかりやすく説明して頂きありがとうございました。 理解することができました。

関連するQ&A