如何将JavaScript for循环转换为CoffeeScript?

Sha*_*oon 72 for-loop coffeescript

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

    doStuff();

}
Run Code Online (Sandbox Code Playgroud)

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

jon*_*tro 112

doStuff() for i in [0 .. 9]
Run Code Online (Sandbox Code Playgroud)

这在介绍页面上解释:http://coffeescript.org/#loops

由JP编辑/更新:

确切的翻译是:

doStuff() for i in [0...10]
Run Code Online (Sandbox Code Playgroud)

你需要小心".."vs"...",例如:

count = 0
doStuff() for i in [0..count] #still executes once!
Run Code Online (Sandbox Code Playgroud)

所以你想,没问题......我会循环直到count-1!

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

直译:

for (var i = 0; i < someCount; ++i)
  doStuff()
Run Code Online (Sandbox Code Playgroud)

for i in [0...someCount]
  doStuff()   
Run Code Online (Sandbox Code Playgroud)

  • 是的,或者从字面上翻译出来,`对于[0 ... 10]中的我.两个点(`..`)表示"最多和包括",而三个点(`...`)表示"最多但不包括".这是一个Ruby-ism. (26认同)

Oli*_*alo 19

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

for (i = 0; i < 10; i++) {
  doStuff();
}
Run Code Online (Sandbox Code Playgroud)

doStuff() for i in [0..someCount] by 1 注意1的for循环.

现在这段代码仍然会创建一个额外的_i变量.如果你不能忍受它,那么使用以下内容:

i=0
while i<=someCount
  doStuff()
  i++
Run Code Online (Sandbox Code Playgroud)