循环算法递增一个数字直到达到一个值,然后递减
Looped algorithm to increment a number until it reaches a value, then decrement
我试图递增一个数字直到它达到一个值(比如说 100),然后让它递减直到它达到 0,然后将所有这些 运行 放在一个 while 循环中。
代码看起来是正确的,但是浏览器卡顿了,如果算法有问题,我无法在控制台中查看。
var ceiling = 100;
var floor = 1;
var x = 1;
var step = 1;
setInterval(function(){
while(1) {
while(x + step <= ceiling) {
x += step;
document.write(x + ' ');
}
while(x - step >= floor) {
x -= step;
document.write(x + ' ');
}
}
}, 1500);
我在这里使用了 setInterval 来减慢执行速度并避免浏览器出现一些缓冲问题。这应该不是问题,因为我有 16GB 的 RAM,但这可能取决于浏览器如何在一个选项卡中 use/access。
我也试过将 setInterval 函数包装在另一个函数中并执行它,结果相同。
你有一个 while(1) 循环,基本上是一个无限循环,即使没有执行任何代码,它也会冻结浏览器。
document.write 仅用于文档的首次呈现。因为你在做一个间隔,所以文档已经呈现了,你不能使用 document.write。相反,您需要将文本附加到正文或 div
其他答案已经指出了无限循环和使用 document.write 的问题。
我认为这符合您的要求:
var ceiling = 100;
var floor = 1;
var x = 1;
var step = 1;
setInterval(function() {
console.log(x);
x += step;
if (x === ceiling || x === floor) {
step = -step;
}
}, 1500);
setInterval 本质上是您的 while(1) 循环。
我试图递增一个数字直到它达到一个值(比如说 100),然后让它递减直到它达到 0,然后将所有这些 运行 放在一个 while 循环中。
代码看起来是正确的,但是浏览器卡顿了,如果算法有问题,我无法在控制台中查看。
var ceiling = 100;
var floor = 1;
var x = 1;
var step = 1;
setInterval(function(){
while(1) {
while(x + step <= ceiling) {
x += step;
document.write(x + ' ');
}
while(x - step >= floor) {
x -= step;
document.write(x + ' ');
}
}
}, 1500);
我在这里使用了 setInterval 来减慢执行速度并避免浏览器出现一些缓冲问题。这应该不是问题,因为我有 16GB 的 RAM,但这可能取决于浏览器如何在一个选项卡中 use/access。
我也试过将 setInterval 函数包装在另一个函数中并执行它,结果相同。
你有一个 while(1) 循环,基本上是一个无限循环,即使没有执行任何代码,它也会冻结浏览器。
document.write 仅用于文档的首次呈现。因为你在做一个间隔,所以文档已经呈现了,你不能使用 document.write。相反,您需要将文本附加到正文或 div
其他答案已经指出了无限循环和使用 document.write 的问题。
我认为这符合您的要求:
var ceiling = 100;
var floor = 1;
var x = 1;
var step = 1;
setInterval(function() {
console.log(x);
x += step;
if (x === ceiling || x === floor) {
step = -step;
}
}, 1500);
setInterval 本质上是您的 while(1) 循环。