For loop 如何将JavaScript for循环转换为CoffeeScript? (i=0;i

For loop 如何将JavaScript for循环转换为CoffeeScript? (i=0;i,for-loop,coffeescript,For Loop,Coffeescript,这就是我想要转换为CoffeeScript的JavaScript代码 for (i = 0; i < 10; i++) { doStuff(); } 介绍页对此进行了说明: 由JP编辑/更新: 确切的翻译是: doStuff() for i in [0 .. 9] 您需要小心使用“.”vs“…”,例如: doStuff() for i in [0...10] 所以你认为,没问题。。。我会一直循环直到数到1 count = 0 doStuff() for i in [0..

这就是我想要转换为CoffeeScript的JavaScript代码

for (i = 0; i < 10; i++) {

    doStuff();

}
介绍页对此进行了说明:

由JP编辑/更新:

确切的翻译是:

doStuff() for i in [0 .. 9]
您需要小心使用“.”vs“…”,例如:

doStuff() for i in [0...10]
所以你认为,没问题。。。我会一直循环直到数到1

count = 0
doStuff() for i in [0..count] #still executes once!
直译:

count = 0
doStuff() for i in [0..count-1] #executes twice!! '0' and then '-1'

标记的答案在功能上是正确的,但生成的代码与原始javascript不匹配。
正确的方法(阅读,最接近以下javascript的方法)


以前的答案很有用。但是,删除
i
会更好地为我生成:

i=0
while i<=someCount
  doStuff()
  i++

其他解决方案添加了一个额外的迭代器变量
i
,供您在循环内部使用,例如
doStuff(i)
,但是来自:

如果不需要当前迭代值,可以忽略它:

browser.closeCurrentTab()用于[0…计数]

具体地说,[0…10]中i的
翻译为(i=j=0;j<10;i=++j)
,而[0…10]的
翻译为(i=0;i<10;i++)


请注意其他评论中关于2点与3点的讨论(
[0..9]
[0…10]
)。

对,或者按字面翻译,
表示[0…10]
中的i。两个点(
)表示“最多并包括”,而三个点(
)表示“最多但不包括”。这是一个Ruby-ism。范围运算符源于对Ruby产生重大影响的。不确定是Perl发明的还是从另一种古老的语言继承的。@JP如果在循环中引入一个变量,代码的行为将不同。例如,它将确定运行时计数器应该走哪条路。0 .. 0应执行一次。0 .. -1应该执行两次。@Bengt完全正确。我认为修改答案很重要,这样互联网搜索者就不会感到困惑。另外,CoffeeScript文档对此不清楚。我被它烫伤了,我不想要别人。我想我的其他例子为人们解释了这一点。试一下
for i in [0...someCount]
  doStuff()   
for (i = 0; i < 10; i++) {
  doStuff();
}
i=0
while i<=someCount
  doStuff()
  i++
for [0...10]
  doStuff()
doStuff() for [0...10]