Javascript:内部三元运算符";如果;条件

Javascript:内部三元运算符";如果;条件,javascript,if-statement,ternary-operator,Javascript,If Statement,Ternary Operator,我发现了这个JavaScript代码,我无法理解在if条件中使用三元运算符意味着什么 var s = 10, r = 0, c = 1, h = 1, o = 1; if (s > r ? (c = 5, h = 2) : h = 1, o >= h) { alert(1); } o>=h是否是在“if”条件下返回计算的结果? 那么在“如果”条件中使用逗号又如何呢?它实际上只是一条句法捷径。可以将其扩展为两个if语句: var condition; if (s > r)

我发现了这个JavaScript代码,我无法理解在if条件中使用三元运算符意味着什么

var s = 10, r = 0, c = 1, h = 1, o = 1;

if (s > r ? (c = 5, h = 2) : h = 1, o >= h)
{
  alert(1);
}
o>=h
是否是在“if”条件下返回计算的结果?
那么在“如果”条件中使用逗号又如何呢?

它实际上只是一条句法捷径。可以将其扩展为两个
if
语句:

var condition;
if (s > r) {
  c = 5;
  condition = (h = 2); // another short-cut; it's essentially (h = 2, condition = true)
}
else {
  h = 1;
  condition = (o >= h);
}

if (condition) {
  alert(1);
}

使用
comma
可以将两个语句转换为一个语句(因为
a,b
总是计算为
b
,尽管
a
b
子表达式都是在过程中计算的)。

当您运行。。。基本上。。。is所做的是运行三元运算,其中它发现(c=5,h=2)不是写入if语句的条件。

因此,条件不会满足,也不会发出警报(1)

1)是;2) 将1分配给
h
。请在发布之前阅读JS中的三元运算符。请看,很抱歉,但我投票将其作为副本关闭(因为在两个链接的答案中对其进行了很好的解释)。如果您有任何特定的问题没有被这些问题所涵盖,请解释它,我们将重新打开它。为什么人们会千方百计地编写难以理解的代码
h=2
对于
if
语句来说没有任何意义。一个好问题是:哪段代码更具可读性?三元运算符快捷方式还是这个?当然,但您认为
h=2
在测试什么?什么都没有;这总是真实的。将
2
分配给
h
和将
条件设置为
组合在一条语句中是另一条捷径。