CoffeeScript 中循环指针的增量

Increment for loop pointer in CoffeeScript

for char, index in 'some string'
    if condition
        index += 2

我有一个 for 循环,我在其中循环一个字符串,当满足特定条件时,我想跳过当前字符之后的一些字符。在 JavaScript 中,我会做 index += 2 并且它会工作,但是由于某些未知原因,CoffeeScript 编译器将这段代码编译成 JS for 循环,它使用 _i 变量来保持真正的索引,只将当前值赋给 index,这意味着通过改变 index 的值,我并没有真正改变指针。

我知道我可以使用 while 循环来做到这一点,但我一直认为必须有一种方法可以使用 for 循环来做到这一点。我是对的,还是应该坚持 while 循环?

编译后的JS代码如下:

var char, index, _i, _len, _ref;

_ref = 'some string';
for (index = _i = 0, _len = _ref.length; _i < _len; index = ++_i) {
  char = _ref[index];
  if (condition) {
    index += 2;
  }
}

看看:CoffeeScript for loop get iterator var

您无法在 CoffeeScript 中更改 for 循环的实际索引,AFAIK。您必须改用 while 循环。