私は、CoffeeScript の範囲内包表記がコンパイルされるわずかに異なる JavaScript について疑問に思っていました。生成された JavaScript の違いに従う理由はありますか?
範囲を整数ステップで反復する
numbers = (i for i in [start..end] by 2)
次のようにコンパイルされます。
for (i = start; i <= end; i += 2) {
_results.push(i);
}
しかし、小数ステップで反復する場合
numbers = (i for i in [start..end] by 1/2)
もう少し複雑な JavaScript を生成します。
for (i = start, _ref = 1 / 2; start <= end ? i <= end : i >= end; i += _ref) {
_results.push(i);
}
では、なぜこの追加start <= end
条件が必要なのでしょうか?