我看到了下面这行
hsb.s = max != 0 ? 255 * delta / max : 0;
做什么?在这种情况下是什么意思?
我看到了下面这行
hsb.s = max != 0 ? 255 * delta / max : 0;
做什么?在这种情况下是什么意思?
当前回答
hsb.s = max != 0 ? 255 * delta / max : 0;
? 三元运算符。它的工作原理类似于if和:
=表示不等于
所以这条直线的长形式是
if (max != 0) { //if max is not zero
hsb.s = 255 * delta / max;
} else {
hsb.s = 0;
}
其他回答
它被称为条件操作符(这是一个三元操作符)。
它的形式是:condition ?Value-if-true: value-if-false 想想?“then”和“else”。
你的代码相当于
if (max != 0)
hsb.s = 255 * delta / max;
else
hsb.s = 0;
为了清楚起见,它是
hsb.s = (max != 0) ? (255 * delta / max) : 0;
也就是返回
255*delta/max如果max != 0 如果Max == 0则为0
您所引用的被称为三元操作符,它本质上是一个基本的if条件检查,如果三元操作中的代码块有效,则可以编写它来执行某个操作,否则默认为回退。
三元运算的语法如下:
condition ? exprIfTrue : exprIfFalse
condition其值用作条件的表达式。 exprIfTrue如果条件的值为真值(等于或可以转换为真值),则表达式被求值。 exprIfFalse如果条件为假(即有一个可转换为假的值)则执行的表达式。
例子
取下面给出的函数,如果提供给函数的数字是偶数,则返回字符串Yes,否则返回No。
函数isEven(num) { 返回(num % 2 == 0) ?“Yes”:“No”; } console.log("2: " + isEven(2)); console.log("3: " + isEven(3));
解释
上述操作分为:
这是一个简单的if语句条件,用于检查括号内的表达式是否为真。 ? "Yes"如果操作为true,则作为执行的结果自动返回给定的字符串字面值。 这是该操作中的else子句,如果条件不满足则返回No。
? :这不是三元运算符吗?
Var x=表达式?真:假
小心这个。虽然-1 !=真,-1 !=假,但A -1的计算结果为真。相信我,我亲眼所见。
so
1 ?“真边”:“假边”
评估为“真侧”