JavaScript中的问号
我遇到了以下线路
hsb.s = max != 0 ? 255 * delta / max : 0;
什么?
和:
在这方面是什么意思?
它被称为条件运算符 (这是一个三元运算符 )。
它有以下forms: condition
? value-if-true
: value-if-false
想想?
作为“那么”和:
作为“其他”。
你的代码相当于
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 -
0
如果最大== 0
hsb.s = max!= 0? 255 * delta / max:0;
? 是一个三元运算符,它的工作原理就像一个如果结合:
!=表示不等于
所以,这条线的长形将是
if (max != 0) { //if max is not zero hsb.s = 255 * delta / max; } else { hsb.s = 0; }
用括号括起来可能会更清楚些,如下所示:
hsb.s = (max != 0) ? (255 * delta / max) : 0;
它所做的是评估第一个括号中的部分。 如果结果是真的那么后面的部分? 在:返回之前。 如果是错误的,则返回:。
? :
? :
这不是三元操作符吗?
var x= expression ? true:false
小心这个。 虽然-1!= true和-1!= false,-1的计算结果为true。 相信我,我已经看到它发生。
所以
-1? “真实的一面”:“虚假的一面”
评估为“真实的一面”