我刚刚在Mozilla网站上遇到过这段代码,虽然对我而言看起来很破旧,但我可能不熟悉它的用法:
for (; k < len; k++)
{
if (k in t && t[k] === searchElement)
return k;
}
分号在循环开始时如何工作?
完整代码为here.
答案 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
}