for (i = 0; i < 10; i++) {
doStuff();
}
Что код JavaScript, который я хочу преобразовать в CoffeeScript.
for (i = 0; i < 10; i++) {
doStuff();
}
Что код JavaScript, который я хочу преобразовать в CoffeeScript.
doStuff() for i in [0 .. 9]
Это объясняется на странице введения: http://coffeescript.org/#loops
Изменить/Обновить по JP:
Точный перевод:
doStuff() for i in [0...10]
Вам нужно быть осторожным с ".." против "...", например:
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.
Правильный путь (читайте, ближайший к следующему javascript)
for (i = 0; i < 10; i++) {
doStuff();
}
doStuff() for i in [0..someCount] by 1
Обратите внимание на на 1 в цикле for.
Теперь этот код по-прежнему создает дополнительную переменную _i. Если вы не можете с ним жить, используйте следующее:
i=0
while i<=someCount
doStuff()
i++
js2coffee.org Преобразует код для вас в обоих направлениях.
Предыдущие ответы работают. Тем не менее, отбрасывание i генерирует это лучше для меня:
for [0...10]
doStuff()
или же
doStuff() for [0...10]
Другие решения добавляют дополнительную переменную итератора i для использования внутри цикла, например, doStuff(i), но из http://coffeescript.org/v1/#loops:
Если вам не нужно текущее значение итерации, вы можете пропустить его:
browser.closeCurrentTab() for [0...count]
Подробно, перевод for я in [0...10] предназначен for (i = j = 0; j < 10; я = ++j), тогда как перевод for [0...10] предназначен for (i = 0; я < 10; i++).
Обратите внимание на обсуждение в других комментариях о 2- [0..9] и 3- [0..9] ([0..9] против [0...10]).
Вы можете обратиться http://js2.coffee для преобразования js в кофе