【发布时间】:2011-03-13 12:55:41
【问题描述】:
我刚刚在 Mozilla 网站上看到了这段代码,虽然对我来说它看起来很糟糕,但我可能不熟悉它的用法:
for (; k < len; k++)
{
if (k in t && t[k] === searchElement)
return k;
}
分号在循环开头是如何工作的?
完整代码是here.
【问题讨论】:
标签: javascript for-loop syntax
我刚刚在 Mozilla 网站上看到了这段代码,虽然对我来说它看起来很糟糕,但我可能不熟悉它的用法:
for (; k < len; k++)
{
if (k in t && t[k] === searchElement)
return k;
}
分号在循环开头是如何工作的?
完整代码是here.
【问题讨论】:
标签: javascript for-loop syntax
第一部分是用于初始化变量的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;
}
【讨论】:
这意味着声明和初始化k变量是更高的;
如果你想跳过一些 for 部分,你只需输入分号,例如:
for (;;) {
//infinite loop
}
【讨论】: