coffeescript 中的 implicit return : 不要在循环中的最后一行使用 return
访问量: 2716
结论:在for循环中, coffeescript 不会自动加上 return . 我们不要在for 循环中,加上return. js2coffee这个工具有bug.
coffeescript 强制的要求每个function都要有返回值。
如果我们没用显示的写上return , coffeescript 会为function的最后一行加上 return 语句。
那么问题就来了: 在 loop 中,不要随便使用 return,例如:
//native js:
for(i=0; i < [1,2,3,4].length; i++) {
console.info("== in the loop, i is: #{i}");
}
在转换成对应的coffeescript时, 不要在循环的尾部加上 return!
# 错误的 coffeescript, 只循环一次:
for i in [1,2,3,4]
console.info "== in the loop, i is: #{i}"
return
上述代码编译成:
ref = [1, 2, 3];
for (l = 0, len = ref.length; l < len; l++) {
i = ref[l];
console.info("== in the loop, i is: " + i);
return;
}
正确的 coffeescript
for i in [1,2,3,4]
console.info "== in the loop, i is: #{i}"
上述代码会被编译成:
ref = [1, 2, 3];
for (l = 0, len = ref.length; l < len; l++) {
i = ref[l];
console.info("== in the loop, i is: " + i);
}