分号在“for”开头是如何工作的?

时间:2011-03-13 12:55:41

标签: javascript for-loop syntax

我刚刚在Mozilla网站上遇到过这段代码,虽然对我而言看起来很破旧,但我可能不熟悉它的用法:

for (; k < len; k++)
    {
      if (k in t && t[k] === searchElement)
        return k;
    }

分号在循环开始时如何工作?

完整代码为here.

2 个答案:

答案 0 :(得分:12)

第一部分是 initial-expression ,用于初始化变量(参见for construct):

 for ([initial-expression]; [condition]; [final-expression])
    statement

在这种情况下,括号表示它是可选的。因此,如果没有任何初始化变量,则不需要编写任何初始化表达式。就像在k循环之前初始化for的情况一样:

var k = n >= 0
      ? n
      : Math.max(len - Math.abs(n), 0);

for (; k < len; k++)
{
  if (k in t && t[k] === searchElement)
    return k;
}

你也可以把它写成 initial-expression 部分,但那不可读:

for (var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); k < len; k++)
{
  if (k in t && t[k] === searchElement)
    return k;
}

答案 1 :(得分:1)

这意味着声明和初始化k变量是上层的;

如果你想跳过一些 for 部分,你只需要加分号,例如:

for (;;) {
  //infinite loop
}