如何在Javascript中使用n元组循环创建无限循环?

时间:2014-04-17 14:37:13

标签: javascript loops

这是一个简单的循环:

var i=0;
while(i<4){
    console.log(i);
    i++;
};

此循环在调试器控制台上显示1~3。现在,我如何做同样的事情,但有无限循环(0~3)?像这样: 0 1 2 3 0 1 2 3 0 1 2 3 ...

3 个答案:

答案 0 :(得分:2)

如果您更喜欢抽象,可以使用闭包并隐藏逻辑。例如:

function generator(valueCb) {
  return function() {
    var i = 0;

    return {
      next: function() {
        var ret = valueCb(i);
        i++;

        return ret;
      }
    };
  }();
}

function cycle() {
  var items = arguments;

  return generator(function(i) {
    return items[i % items.length];
  });
}

var nums = cycle(0, 1, 2, 3);

console.log(nums.next()); // 0
console.log(nums.next()); // 1
console.log(nums.next()); // 2
console.log(nums.next()); // 3
console.log(nums.next()); // 0

只需根据需要多次拨打next即可。我有discussed this approach in more detail at my blog

答案 1 :(得分:0)

尝试:

function inf( n, m ) {
    for ( var i = 0; i < n; i++ ) {
        for ( var j = 0; j < m; j++ ) {
            console.log(j);
        }
    }
}

inf(5,4);

JSFIDDLE

第一个标识符n是您希望根据标识符m输出相同结果的次数,实际上是数字0 1 2 3

答案 2 :(得分:0)

使用模运算符:

var i=0;
while(1){
    console.log(i % 4);
    i++;
}

(这最终会溢出,但我想你可以解决这个问题。)