为什么coffeescript会为循环产生额外的参数:“菜单i + 1,碟子菜,我在课程中”

时间:2014-02-19 09:02:51

标签: javascript coffeescript

menu i + 1, dish for dish, i in courses

这是coffeescript主页“Loops and Comprehensions”部分的一行示例代码。它将产生如下所示,也在主页上提供:

for (i = _j = 0, _len1 = courses.length; _j < _len1; i = ++_j) {
  dish = courses[i];
  menu(i + 1, dish);
}

变量_j不是必需的,因此下面的代码也适用:

for (i = 0, _len1 = courses.length; i < _len1; i++) {
  dish = courses[i];
  menu(i + 1, dish);
}

为什么生成_j?我错了吗?

1 个答案:

答案 0 :(得分:3)

  

为什么生成_j?

它允许您篡改循环体中的i变量,并在每次迭代后将其重置为正确的_j值。如果不这样做,CoffeeScript就无法识别,因此即使没有必要也无法省略它。

  

我错了吗?

不。只是不关心任何下划线前缀变量。