for (i = 0; i < 10; i++) { doStuff(); }
这是我想转换成 CoffeeScript 的 JavaScript 代码。
doStuff() for i in [0 .. 9]
这在介绍页面上有解释: http://coffeescript.org/#loops
太平绅士编辑/更新:
确切的翻译是:
doStuff() for i in [0...10]
你需要小心“ . .”vs. .”,例如:
count = 0 doStuff() for i in [0..count] #still executes once!
所以你认为,没问题... 我会循环直到 count-1!
count = 0 doStuff() for i in [0..count-1] #executes twice!! '0' and then '-1'
直译:
for (var i = 0; i < someCount; ++i) doStuff()
是
for i in [0...someCount] doStuff()
标记的答案在功能上是正确的,但是生成的代码与原来的 javascript 不匹配。 正确的方法 (read,最接近下面的 javascript)
是 doStuff() for i in [0..someCount] by 1 注意 for 循环中的 1。
doStuff() for i in [0..someCount] by 1
现在这段代码仍然会创建一个额外的 _i变量:
_i
i=0 while i<=someCount doStuff() i++
以前的答案是有用的,但是,放弃 i对我来说更好:
i
for [0...10] doStuff()
或者
doStuff() for [0...10]
其他解决方案增加了一个额外的迭代器变量 i,供您在循环内部使用,例如 doStuff(i),但是从 http://coffeescript.org/v1/#loops:
doStuff(i)
如果你不需要当前的迭代值,你可以省略它: browser.closeCurrentTab() for [0...count]
如果你不需要当前的迭代值,你可以省略它:
browser.closeCurrentTab() for [0...count]
具体来说,for i in [0...10]的翻译是 for (i = j = 0; j < 10; i = ++j),而 for [0...10]的翻译是 for (i = 0; i < 10; i++)。
for i in [0...10]
for (i = j = 0; j < 10; i = ++j)
for [0...10]
for (i = 0; i < 10; i++)
请注意其他评论中关于2点与3点的讨论([0..9]与 [0...10])。
[0..9]
[0...10]