0

今日、私は次の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 つの要素があるのはなぜですか? ありがとう!

4

6 に答える 6

1

for ( var b = k, d = 関数 (c) {}, a = bp, e = z; 0 < c; ) {

} // for loop closing cause

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

最初の for ループをシグニチャー for ループでマップすると...

太字のコードは、for ループ内で使用されるさまざまな変数の宣言部分です.. .. ここでは、任意の数の変数を宣言できます...

2つ目はチェック条件…

そして3番目の部分は空です

于 2012-10-28T08:14:49.177 に答える
1

5 つの部分ではなく、3 つだけです。

  • 最初の宣言には、4 つの変数宣言 ( bdaおよびe) が含まれています。
  • 2 番目のものには、比較 ( 0 < c) が含まれています。
  • 3つ目は空です。

各部分はセミコロン ( ;) で区切られ、変数宣言はカンマで区切られます,

最初の部分には、式または変数宣言リストを含めることができます。詳細については、仕様またはMDN JavaScript ドキュメントをご覧ください。

initialization
式 (代入式を含む) または変数宣言。通常、カウンター変数を初期化するために使用されます。この式は、必要に応じて、varキーワードを使用して新しい変数を宣言できます。これらの変数はループに対してローカルではありません。つまり、for ループと同じスコープ内にあります。この式の結果は破棄されます。


が最も典型的な形だからといってfor(x=0; x<something; x++)、他の形が存在しないわけではありません。各パーツには、任意の式を含めることができます。たとえば、DOM 要素のすべての子を反復処理する便利な方法は次のとおりです。

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

}

まず、node要素の最初の子で初期化されます。node2 番目の部分は、そうでないかどうかをテストするだけでありnull(明示的に記述することもできますnode !== null)、3 番目の部分 (反復後に実行) は、次の子を に割り当てnodeます。

于 2012-10-28T08:15:14.620 に答える
0

ループ内の制御変数は、例のように有効な式にすることもできます。

于 2012-10-28T08:14:01.390 に答える
0

あなたが投稿した最初のループは、最後とは少し異なります。最初は、いくつかの変数 (そのうちの 1 つは関数) を宣言して割り当て、次に condition を提供し、(0<c)反復のたびに何もしません。最後は無効のようです。

最初の問題は、 a を初期化しないことだけのように思われるcため、 c がループのスコープ外からの変数であり、何らかの形で本体内で変更されていない限り、ループはまったく実行されません ( c>=0) または永久に実行されます (c実際に 0 未満の場合)。

于 2012-10-28T08:15:20.413 に答える
0

説明しますが、基本的にこれは良いコードではありません。

それを理解するためだけにオンラインにする必要があるため、良いコードではありません。

for (var b = k, d = function (c) { // 関数本体 }, a = bp, e = z; 0 < c;) {

} // for loop closing cause

と同等です

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

for (; 0 < c; ){

}

for ループの親には 3 つの部分があります。 1. 初期化 2. 条件 3. 終了ステートメント

それはすべて ; で区切る必要があります。

ただし、これらは for ループではすべてオプションです

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

と同じ:

var init = 0;
for (;;) {
 if (!(init < 10)) {
  break;
 }
 init += 10;
}
于 2012-10-28T08:18:46.690 に答える
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 < c の場合、d は 0

于 2012-10-28T08:46:43.620 に答える