我有这样的代码:
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--) {
可有人请解释一下为什么?
编辑:我如何得到我的预期语法输出?
在CoffeeScript中,你需要使用by
关键字来指定一个循环的步骤。 你的情况:
for x in [1...count] by 1
...
你问到循环从1
到count
,但你假设count
总是会大于或-等于比一; 生成的代码不会做这样的假设。
因此,如果count
为> = 1,则使循环计数器每次递增:
for (x = 1; x < count; x++) { /* ... */ }
但是,如果count
为<1,则使循环计数器每次递减:
for (x = 1; x > count; x--) { /* ... */ }
那么,你想x
从1到count
。 该代码是检查是否count
是更大或小于1。
如果count
大于1,那么就必须增加 x
而这是小于 count
。
如果count
小于1,那么它有递减 x
,同时它比大 count
。
备查:
$('#content .post').each ->
prev_el_height += $(this).height()
具有相同的效果,假设:nth-child
等于.eq()
和x
去过去数的元素是一个错字。