Back

coffeescript 中的 implicit return : 不要在循环中的最后一行使用 return

发布时间: 2015-05-05 00:00:00

结论:在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);
}

Back