while (--i) 什么时候使用?

When is while (--i) used?

我知道 while 循环会继续 运行 "While something is true"
但是我什么时候使用

while (--i)

我明白这是说 "while decrements i is true"

我确定我对这个说法的理解是错误的。

我希望有人能给我一个例子,说明什么时候会用到它。

我认为它就像一个 if 语句,当 i 减小时它会继续发生。

数回 falsy 个结果,或更直白:

虽然 --i 的结果不计算为 false(即 0),但做一些事情。

在Java脚本中:

var i = 4;
while (--i) // try also i--
{
  alert("we still have time " + i);
}

在某些语言中,当用作 布尔值 时,大于 0 的 数字 被视为 true (我认为在 C 中这会起作用)。在这种情况下(JavaScript as myf pointed)你将迭代直到 i 不再大于 0 的那一刻。尝试 --ii-- 来查看数量的差异迭代次数。

在 Java 等其他语言中,a_horse_with_no_name 提到的 C# 你必须指出这是一个布尔运算,例如while ( --i > 0)。 C# 编译器说的是:

Cannot implicitly convert type 'int' to 'bool'

你有时会看到

var i = 4;
while(--i) {
  // Code to repeat 4 times
}

作为更简洁的写作方式

for (var i = 0; i < 4, i += 1) {
  // Code to repeat 4 times
}

但阅读起来也可能更加混乱(特别是如果您不知道 JavaScript 中的零是假的)。我通常更喜欢后一种形式。