JavaScript中的问号和冒号

2020/10/09 23:41 · javascript ·  · 0评论

我遇到了以下问题

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

在这种情况下?:什么意思?

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

它有以下形式:conditionvalue-if-truevalue-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
  • 0 如果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;
}

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

var x= expression ? true:false

?:是else {}if(){}问题的简写条件因此,您的代码可以与此互换:

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

MDN-条件(三元)运算符

请注意这一点。尽管-1!= true和-1!= false,但-1的计算结果为true。相信我,我已经看到了它的发生。

所以

-1?“真实面”:“错误面”

评估为“真实面”

本文地址:http://javascript.askforanswer.com/javascriptzhongdewenhaohemaohao.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!