这个循环序列是如何流动的

how does this loop sequence flows

我遇到了一个 qns,如果两个数字彼此不相等,它会求和,我不太明白 while 循环中的语句是如何工作的。

例如 a = 4, b = 0 sum 的最终值应该是 10,因为它是 4+3+2+1+0 = 10

function getSum (a,b)
{
 var sum = 0;

  while (a !== b)
{
  sum += a < b ? a++:b++;
}
 return sum+a
}

我想把它看成

(总和+=a) < b ? a++:b++

总和 += (a < b) ? a++:b++

条件是粗体的条件

(编辑:我知道第二部分的条件在 ? 之前尽管我用笔和纸写下来,但还是迷路了,所以先是粗体字)

如果有人能教/帮忙一步一步分解循环序列,非常感谢!

由于+=是赋值操作,所以是最后执行的操作之一。所以, sum += (a < b) ? a++:b++ 是正确的等价物。

这一行相当于:

if (a<b) {
  sum += a++;
}
else {
  sum += b++;
}