如何编写具有多个条件的for循环?
预期的Javascript:
for(k=1; k < 120 && myThing.someValue > 1234; k++){
myThing.action();
}
js2coffee.org表示我应该使用while循环:
k = 1
while k < 120 and myThing.someValue > 1234
myThing.action()
k++
但最终会在javascript中编译回while循环。
有没有办法编写coffescript来编译到我想要的javascript并在for循环中包含额外的条件?
如果该问题的答案是错误的,那么使用coffeescript获得相同功能的最佳方式是什么?
到目前为止,我最好的while循环解决方案是
k = 1
myThing.action() while k++ < 120 and myThing.someValue > 1234
答案 0 :(得分:4)
由于for
循环等同于while
循环加上几个语句,而CoffeeScript只提供一种for
循环,因此请使用while
循环。如果您尝试获取特定的 JavaScript输出,则可能不应该使用CoffeeScript。
当然,总是
`for(k=1; k < 120 && myThing.someValue > 1234; k++) {`
do myThing.action
`}`
避免的。
答案 1 :(得分:2)
尝试编写生成特定JavaScript的CoffeeScript有点愚蠢且没有意义,所以不要这样做。
相反,将代码的意图转换为CoffeeScript。你可以说:
for k in [1...120]
break if(myThing.someValue <= 1234)
myThing.action()
如果您实际上没有使用循环索引,请将其删除:
for [1...120]
break if(myThing.someValue <= 1234)
myThing.action()
这两个产生的JavaScript结构如下:
for(k = 1; k < 120; k++) {
if(myThing.someValue <= 1234)
break;
myThing.action();
}
这应该与你的循环具有相同的效果。此外,我倾向于认为这三个循环比原始循环更易于维护,因为它们不会隐藏循环条件中的异常情况,它们将它放在你的脸上,这样你就不会错过它;当然,这只是我的意见。