这是一个简单的循环:
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 ...
答案 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);
第一个标识符n
是您希望根据标识符m
输出相同结果的次数,实际上是数字0 1 2 3
答案 2 :(得分:0)
使用模运算符:
var i=0;
while(1){
console.log(i % 4);
i++;
}
(这最终会溢出,但我想你可以解决这个问题。)