7

このCoffeeScriptの部分:

for i in [1..10]
  console.log i

次のようにコンパイルされます。

for (i = _i = 1; _i <= 10; i = ++_i) {
  console.log(i);
}

だけを使用しない理由がわかりませんi。何か案は?

4

1 に答える 1

11

私は CoffeeScript にあまり詳しくありませんがi、ループ内で変数が変更されるのを防ぐためだと思います。

例えば:

for i in [1..10]
  console.log i
  i = 7

このコードを生成した可能性があります

for (i = 1; i <= 10; ++i) {
  console.log(i);
  i = 7;
}

これは明らかに無限ループを引き起こします。

ただし、CoffeeScript のバージョンでは、次のことが起こります。

for (i = _i = 1; _i <= 10; i = ++_i) {
  console.log(i);
  i = 7;
}

_iループ内の位置を追跡するが存在するため、ループはもはや無限ではありません。

于 2013-07-10T07:23:02.370 に答える