我看到了下面这行

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

做什么?在这种情况下是什么意思?


当前回答

? :这不是三元运算符吗?

Var x=表达式?真:假

其他回答

小心这个。虽然-1 !=真,-1 !=假,但A -1的计算结果为真。相信我,我亲眼所见。

so

1 ?“真边”:“假边”

评估为“真侧”

?:是else{}和if(){}问题的简写条件。 所以你的代码是可以互换的:

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

MDN -条件(三元)运算符

? :这不是三元运算符吗?

Var x=表达式?真:假

为了清楚起见,它是

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

也就是返回

255*delta/max如果max != 0 如果Max == 0则为0

用括号写出来可能会更清楚一些:

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

它所做的是计算第一个括号里的部分。如果结果为真,那么?在:之前返回。如果为false,则返回:后面的内容。