JavaScript 中的问号和冒号

我遇到了以下行

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

在这种情况下,和 意味着什么??:


答案 1

它被称为条件运算符(它是一个三元运算符)。

它的形式为: ? :
将 “那么” 和 “否则”conditionvalue-if-truevalue-if-false?:

您的代码等效于

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

答案 2

为清楚起见,正确括号,它是

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

表示返回

  • 255*delta/max如果最大值 != 0
  • 0如果最大值 == 0