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

Ste*_*hen 5 javascript syntax for-loop

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

for (; k < len; k++)
    {
      if (k in t && t[k] === searchElement)
        return k;
    }
Run Code Online (Sandbox Code Playgroud)

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

完整的代码在这里.

Gum*_*mbo 13

第一部分是初始化表达式,用于初始化变量(参见for构造):

 for ([initial-expression]; [condition]; [final-expression])
    statement
Run Code Online (Sandbox Code Playgroud)

在这种情况下,括号意味着它是可选的.因此,如果没有任何初始化变量,则不需要编写任何初始化表达式.就像在这种情况下,kfor循环之前初始化:

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;
}
Run Code Online (Sandbox Code Playgroud)

您也可以将其写为初始表达式部分,但这不是那么可读:

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;
}
Run Code Online (Sandbox Code Playgroud)