coffeescript 中的 implicit return : 不要在循环中的最后一行使用 return
访问量: 2675
结论:在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); }