简单的循环中的CoffeeScript(simple loop in coffeescript)

2019-07-29 01:53发布

我有这样的代码:

count = $content.find('.post').length;              
for x in [1...count]
    /*
    prev_el_height += $("#content .post:nth-child(" + x + ")").height();
    */
    prev_el_height += $content.find(".post:nth-child(" + x + ")").height();

我预计今年变成

for (x = 1; x < count; x++) { prev_el ... }

但事实证明这个:

for (x = 1; 1 <= count ? x < count : x > count; 1 <= count ? x++ : x--) {

可有人请解释一下为什么?

编辑:我如何得到我的预期语法输出?

Answer 1:

在CoffeeScript中,你需要使用by关键字来指定一个循环的步骤。 你的情况:

for x in [1...count] by 1
  ...


Answer 2:

你问到循环从1count ,但你假设count总是会大于或-等于比一; 生成的代码不会做这样的假设。

因此,如果count为> = 1,则使循环计数器每次递增:

for (x = 1; x < count; x++) { /* ... */ }

但是,如果count为<1,则使循环计数器每次递减:

for (x = 1; x > count; x--) { /* ... */ }


Answer 3:

那么,你想x从1到count 。 该代码是检查是否count是更大或小于1。

如果count大于1,那么就必须增加 x而这是小于 count

如果count小于1,那么它有递减 x ,同时它比 count



Answer 4:

备查:

$('#content .post').each ->
    prev_el_height += $(this).height()

具有相同的效果,假设:nth-child等于.eq()x去过去数的元素是一个错字。



文章来源: simple loop in coffeescript