Answers:
它有以下形式:condition
?value-if-true
:value-if-false
将?
“ then”和:
“ else”视为。
您的代码等同于
if (max != 0)
hsb.s = 255 * delta / max;
else
hsb.s = 0;
addition
对前面和后面的表达式进行运算的二进制运算符(例如1 + 2加号在1和2上运算)一样,或者取反是一元运算符(例如-x x的值取反)。
当用方括号编写时,这可能会更清楚一些:
hsb.s = (max != 0) ? (255 * delta / max) : 0;
它的作用是评估第一个方括号中的部分。如果结果为真,则?之后的部分?并且在返回:之前。如果为假,则返回:之后。
? :
这不是三元运算符吗?
var x= expression ? true:false
?:是else {}
和if(){}
问题的简写条件。因此,您的代码可以与此互换:
if(max != 0){
hsb.s = 225 * delta / max
}
else {
hsb.s = 0
}
请注意这一点。尽管-1!= true和-1!= false,但-1的计算结果为true。相信我,我已经看到了它的发生。
所以
-1 “真面”:“假面”
评估为“真实面”
Infinity
(由零除引起)。