Javascript 这是什么hr=hr>=12 ? hr-12:hr;方法

Javascript 这是什么hr=hr>=12 ? hr-12:hr;方法,javascript,Javascript,我正在练习这个时钟教程。 代码中的所有内容我都很清楚。 接受这个hr=hr>=12?hr-12:hr我不清楚。可能是一个if-else语句 有人能解释一下这段代码在做什么吗 谢谢:)这就是所谓的三元运算 这意味着 if(hr>=12) hr=hr-12; else hr=hr; 以下内容足够了 if(hr>=12) hr=hr-12; 它被称为三元运算 这意味着 if(hr>=12) hr=hr-12; else hr=hr; 以下内容足够了 if(hr

我正在练习这个时钟教程。 代码中的所有内容我都很清楚。 接受这个
hr=hr>=12?hr-12:hr我不清楚。可能是一个
if-else
语句

有人能解释一下这段代码在做什么吗


谢谢:)

这就是所谓的三元运算

这意味着

if(hr>=12)
 hr=hr-12;
else
 hr=hr;
以下内容足够了

if(hr>=12)
     hr=hr-12;

它被称为三元运算

这意味着

if(hr>=12)
 hr=hr-12;
else
 hr=hr;
以下内容足够了

if(hr>=12)
     hr=hr-12;
如果
hr
不符合该标准,则
hr
应保持不变


如果
hr
不符合该标准,则
hr
应保持不变

它是一个三元运算符,形式如下:

condition ? if_true | if_false 
如果为可读性添加更多括号,则可能会变成:

hr = ( (hr >= 12) ? (hr - 12) : hr )

也就是说,如果超过12,减去12,并存储回hr

它是一个三元运算符,形式如下:

condition ? if_true | if_false 
如果为可读性添加更多括号,则可能会变成:

hr = ( (hr >= 12) ? (hr - 12) : hr )

也就是说,如果超过12,减去12,并存储回hr

这是三元运算符
(?:)
以下是此处所做工作的简单说明:

if(hr>=12)
{
    hr=hr-12;
}
//or else hr will have its same value

这是三元运算符
(?:)
以下是此处所做工作的简单说明:

if(hr>=12)
{
    hr=hr-12;
}
//or else hr will have its same value

hr=hr>=12?hr-12:hr
相同,如果(hr>=12)hr=hr-12,则hr=hr


bool?expr\u a:expr\u b
是一个运算符,当
bool
为true时,计算expr\u a并将其值用作整个expr的值,否则expr\u b将为。

hr=hr>=12?hr-12:hr
相同,如果(hr>=12)hr=hr-12,则hr=hr

bool?expr\u a:expr\u b
是一个运算符,当
bool
为true时,计算expr\u a并将其值用作整个expr的值,否则expr\u b将为。

它称为a。

它称为a。

它的意思是:

if(hr>=12)
{
  hr = hr - 12;
}
一般来说:

x= condition ? y : z
如果条件为真,则表示:

if(hr>=12)
{
  hr = hr - 12;
}
一般来说:

x= condition ? y : z

如果条件为真,则
x=y
,否则
x=z

其效果与此相同:

hr %= 12;   //equivalent to -> hr = hr>=12 ? hr-12 : hr;

其效果与此相同:

hr %= 12;   //equivalent to -> hr = hr>=12 ? hr-12 : hr;

我同意,这只是为了解释这一点我同意,这只是为了解释这一点,这一点在这个应用程序中是非常出色的。除了它不能完全做到这一点——当hr=25时,您的选项给出1,而他的选项给出13,因此它并不完全相等。@qdot所说的“相同效果”,我的意思是在本文中它具有相同的效果,其中
hr
是小时,并且不能有[0,23]之外的值范围。或者它错过了有效性检查的可能性-如果在此操作后它不符合[0,11]范围,那么它显然无效。你的方法允许大的正整数通过。@qdot来吧,伙计,你在想什么“有效性”?您看到示例了吗->
var hr=now.getHours()
,其中
现在
日期
对象。link->是的,我看到了这个例子,但它显然是有教育意义的-没有必要为此生气,你的评论在这个应用程序中显然很精彩,但它显然不是等效的-有时你可以使用它来清理表单中的输入值,然后检查它是否符合[0,11]范围-在这种情况下,您的答案不相等。在这种情况下,它并没有什么不合适的地方,但它绝对不是等价的,在这个应用程序中,它实际上非常出色。除了它不能完全做到这一点——当hr=25时,您的选项给出1,而他的选项给出13,因此它并不完全相等。@qdot所说的“相同效果”,我的意思是在本文中它具有相同的效果,其中
hr
是小时,并且不能有[0,23]之外的值范围。或者它错过了有效性检查的可能性-如果在此操作后它不符合[0,11]范围,那么它显然无效。你的方法允许大的正整数通过。@qdot来吧,伙计,你在想什么“有效性”?您看到示例了吗->
var hr=now.getHours()
,其中
现在
日期
对象。link->是的,我看到了这个例子,但它显然是有教育意义的-没有必要为此生气,你的评论在这个应用程序中显然很精彩,但它显然不是等效的-有时你可以使用它来清理表单中的输入值,然后检查它是否符合[0,11]范围-在这种情况下,您的答案不相等。在这种情况下,没有什么不恰当的地方,但绝对不是等价的