For循环中的省略条件

mar*_*lly 4 javascript for-loop

有人可以帮我理解为什么以下代码有效:

var someNumbers = [1,2,3,4,5];
var length = someNumbers.length;

for(var i=length; i--;) {
  console.log(i);
}
Run Code Online (Sandbox Code Playgroud)

这个for循环如何知道终止i等于0?负数怎么样?这不会导致无限循环吗?

dee*_*see 7

在Javascript中,任何事情都可能是一个条件!在这种情况下,它是i--.一旦i--返回0,循环将停止因为0是假的.

缺少的部分是第三个表达式("最终表达式",参见循环中的MDN页面for),您通常会在其中找到增量/减量操作,但在这种情况下两者都组合在"条件"表达式中.