web-dev-qa-db-ja.com

JavaScriptの疑問符とコロン

私は次の行に出くわしました

hsb.s = max != 0 ? 255 * delta / max : 0;

このコンテキストで?:はどういう意味ですか?

230
Inaimathi

条件演算子三項演算子 )と呼ばれます。

形式は次のとおりです。conditionvalue-if-truevalue-if-false
?を「then」、:を「else」と考えてください。

あなたのコードは

if (max != 0)
  hsb.s = 255 * delta / max;
else
  hsb.s = 0;
342
Greg

明確にするために適切に括弧で囲んで、

hsb.s = (max != 0) ? (255 * delta / max) : 0;

どちらかを返すことを意味

  • 255*delta/max if max!= 0
  • 0 if = = 0の場合
34
Jason S

これは、次のように角かっこで記述すると、おそらく少し明確になります。

hsb.s = (max != 0) ? (255 * delta / max) : 0;

最初の括弧内の部分を評価します。結果がtrueの場合、?の後の部分そして:が返される前。 falseの場合、:に続くものが返されます。

7
Nikolas Stephan

hsb.s = max!= 0? 255 *デルタ/最大:0;

?は三項演算子で、ifと組み合わせて次のように機能します。

!=は等しくないことを意味します

したがって、この行の長い形式は

if (max != 0) { //if max is not zero
  hsb.s = 255 * delta / max;
} else {
  hsb.s = 0;
}
7
CaffGeek

? :は三項演算子ではありませんか?

var x= expression ? true:false

1
jldupont

?:は、else {}およびif(){}の問題の省略形です。あなたのコードはこれと交換可能です:

if(max != 0){
       hsb.s = 225 * delta / max
}
else {
       hsb.s = 0
}

MDN-条件付き(3項)演算子