“for”循环的奇怪语法

时间:2012-10-28 08:11:28

标签: javascript for-loop

今天我遇到了以下JS:

    for (var b = k, d = function (c) {
       // function body
    }, a = b.p, e = z; 0 < c;) {

    } // for loop closing cause

有人可以解释一下这里发生了什么吗?我对这个函数感到困惑,正常的“for”循环会这样做:

    for(x=0; x<something; x++){

    }

此循环似乎遵循不同的结构:

    for(x=0; d = function(c), a = somevar, e = somevar, 0 < c)

为什么for循环中有5个元素?谢谢!

6 个答案:

答案 0 :(得分:1)

for( var b = k,d = function(c){},a = b.p,e = z; 0 < c;){

} // for loop closing cause

for( x = 0 ; x<something; x ++)

如果您将第一个for循环映射为循环签名...

粗体的代码是将在for循环中使用的不同变量的声明部分.. ..可以在这里声明任意数量的变量......

第二个是检查条件......

第三部分是空的

答案 1 :(得分:1)

没有五个部分,只有三个部分:

  • 第一个包含四个变量声明(bdae)。
  • 第二个包含比较(0 < c)。
  • 第三个是空的。

每个部分用分号(;)分隔,变量声明用逗号,分隔。

允许第一部分包含表达式或变量声明列表。有关详情,请查看specificationMDN JavaScript documentation

  

<强> initialization
  表达式(包括赋值表达式)或变量声明。通常用于初始化计数器变量。此表达式可以选择使用var关键字声明新变量。这些变量不是循环的局部变量,即它们与for循环所在的范围相同。此表达式的结果将被丢弃。


仅因为for(x=0; x<something; x++)是最典型的形式,并不意味着其他形式不存在。每个部分都可以包含任意表达式。例如,迭代DOM元素的所有子元素的有用方法如下:

for(var node = element.firstChild; node; node = node.nextSibling) {

}

首先,使用元素的第一个子元素初始化node。第二部分仅测试node是否null(您还可以明确地编写node !== null)和第三部分(在迭代后执行)将下一个子项分配给node

答案 2 :(得分:0)

循环中的控制变量也可以是您的示例中的有效表达式。

答案 3 :(得分:0)

您发布的第一个循环与上一个略有不同。第一个声明并分配几个变量(其中一个是函数),然后提供条件(0<c),然后每次迭代都不执行任何操作。最后似乎无效。

第一个问题似乎只是它没有初始化c,所以除非c是一个来自循环范围之外的变量,它在某种程度上被改变了它的体内,循环将完全不运行(如果c>=0)或它将永远运行(如果c确实小于0)。

答案 4 :(得分:0)

我会解释,但基本上这不是好的代码。

它不是很好的代码,因为你需要上网才能搞清楚。

for(var b = k,d = function(c){        //函数体     },a = b.p,e = z; 0&lt; c;){

} // for loop closing cause

相当于

var b = k,
    d = function (c) {
      // function body
    },
    a = b.p,
    e = z;

for (; 0 < c; ){

}

for循环父母有三个部分 1.初始化 2.条件 3.结束陈述

必须用a;

分隔

除了这些在for循环中都是可选的

for (var init = 0; init < 10; init += 1) {}

同样如下:

var init = 0;
for (;;) {
 if (!(init < 10)) {
  break;
 }
 init += 10;
}

答案 5 :(得分:0)

 for (var b = k, d = function (c) {
       // function body
    }, a = b.p, e = z; 0 < c;) {

    } // for loop closing cause

只要d不为0,for循环就会运行。当0 <0时,d为0。 ç