我想知道 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
条件呢?