【问题标题】:How does the semicolon work at the beginning of "for"?“for”开头的分号如何工作?
【发布时间】: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


    【解决方案1】:

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

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

    在这种情况下,括号表示它是可选的。因此,如果您没有任何要初始化的变量,则无需编写任何初始化表达式。就像在这种情况下,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;
    }
    

    你也可以把它写成 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;
    }
    

    【讨论】:

    • 谢谢,我没有意识到变量是可选的,现在这样看是有意义的。
    【解决方案2】:

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

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

    for (;;) {
      //infinite loop
    }
    

    【讨论】:

    • true - 太多的英语语法:)
    猜你喜欢
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 2015-02-20
    • 2018-01-25
    • 1970-01-01
    • 2022-10-29
    相关资源
    最近更新 更多