【问题标题】:What does while (i --> 0) mean?while (i --> 0) 是什么意思?
【发布时间】:2014-01-12 07:46:16
【问题描述】:

如果这是一个愚蠢的问题,我深表歉意,但我无法在任何地方找到答案。

以下代码如何工作? (我意识到它会遍历els 的元素)

var i = els.length;
while (i --> 0) {
    var el = els[i];
    // ...do stuff...
}

我不知道--> 是什么意思。没有它的文档。有人能启发我吗?

【问题讨论】:

  • 它是 i-- 大于 0
  • 一个空格错字真的有 4 个赞吗?
  • @RUJordan - 这不是间距错字。这(可能)是故意尝试用--> 形成一个箭头作为一种伪“倒计时”运算符。整个语句被读作“我归零”......
  • @nnnnnn 现在我知道它的作用,我同意它可能只是为了幽默/烦人。
  • @nderscore:这有点不同。如果您不能保证 i>= 0 开始,则循环可以继续。

标签: javascript while-loop operators


【解决方案1】:

应该读作

i-- > 0

所以,真正发生的是,

  1. 检查i的值是否大于0,如果为真则控制进入while块,如果为假则跳过while块。

  2. 无论哪种方式,i 的值都会在检查条件后立即递减。

使用for 循环总是更好,当我们使用计数器运行循环时,像这样

for (var i = els.length - 1; i >= 0; i -= 1) {
    ...
}

Please read more about whether ++, -- is okay or not.

【讨论】:

  • 对减量前的值进行校验。如果写成--i > 0,则在减量后检查该值。
  • @Cuberto 这就是我提到帖子减少的原因。 :)
  • 您确实提到了“post decremented”,但您说“然后会检查值”混淆了它,这听起来像是在递减之后发生的......
  • 所以就像i - 1 > 0?
  • @ManofSnow i - 1 实际上不会改变i 的值,i-- 会改变i 的值。
【解决方案2】:

这只是奇怪的间距,应该是

while((i--) > 0)

它只是在递减和检查条件后。 C++的问题有这个幽默的回答,但我认为它被删除了

while (x --\
            \
             \
              \
               > 0) //i goes down to zero!

或者类似的东西,无论如何

如果你有类似的东西

var i=3;
while(i-->0){
     console.log(i);
}

它会返回

2
1
0

【讨论】:

  • 是这样 ;-) 但无论如何,你的回答分享了一段有趣的 C++ 代码,值得点赞)
  • 大声笑...我刚刚阅读了原始答案,并且 cmets 遵循了它。
  • 是的,我想我至少读过一次所有的答案和 cmets
【解决方案3】:

代码实际上应该是:

while (i-- > 0) {

如果变量i 递减后的值大于零,则循环将运行的位置。

【讨论】:

  • 比较后减量,--i是预减量。
【解决方案4】:

这只是奇怪的间距。是一样的

while (i--  >  0) {

【讨论】:

    猜你喜欢
    • 2015-10-08
    • 1970-01-01
    • 2014-04-06
    • 2016-01-22
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    相关资源
    最近更新 更多