Javascript “的开头分号是如何工作的?”;为了“什么?”;?

Javascript “的开头分号是如何工作的?”;为了“什么?”;?,javascript,for-loop,syntax,Javascript,For Loop,Syntax,我刚刚在Mozilla网站上发现了这段代码,虽然对我来说它看起来很糟糕,但我可能不熟悉它的用法: for (; k < len; k++) { if (k in t && t[k] === searchElement) return k; } (;k=0 ? N :Math.max(len-Math.abs(n),0); 对于(;k=0?n:Math.max(len-Math.abs(n),0);k

我刚刚在Mozilla网站上发现了这段代码,虽然对我来说它看起来很糟糕,但我可能不熟悉它的用法:

for (; k < len; k++)
    {
      if (k in t && t[k] === searchElement)
        return k;
    }
(;k { if(t中的k&&t[k]==searchElement) 返回k; } 分号在循环开始时是如何工作的

完整代码是

第一部分是用于初始化变量的初始表达式(请参阅):

括号表示在本例中它是可选的。因此,如果没有任何要初始化的变量,则不需要编写任何初始值设定项表达式。类似于在这种情况下,
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;
}
var k=n>=0
? N
:Math.max(len-Math.abs(n),0);
对于(;k
您也可以将其作为初始表达式的一部分编写,但它的可读性不高:

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;
}
(var k=n>=0?n:Math.max(len-Math.abs(n),0);k
这意味着声明和初始化k变量是更高的

如果您想跳过部分,只需输入分号即可,例如:

for (;;) {
  //infinite loop
}

谢谢,我没有意识到变量是可选的,现在这样看是有意义的。真的-太多的英语语法:)
for (;;) {
  //infinite loop
}