【发布时间】:2019-03-23 02:00:28
【问题描述】:
通过一个简单的 for 循环,我可以在 p5.js web editor 中触发潜在的无限循环异常
function setup() {
var cnt = 0;
var startTime = new Date().getTime();
for (i = 0; i < 80000; i++) {
console.log(cnt++);
}
var endTime = new Date().getTime();
console.log("done in " + (endTime - startTime) + " milliseconds");
}
给我输出:
在第 5 行退出潜在的无限循环。要禁用循环保护:在代码中添加“// noprotect” 在 501 毫秒内完成
这并不奇怪,因为我看到p5.js-web-editor issues 174 中的阈值已增加到 500 毫秒
至少对我来说令人惊讶的是,如果我删除任何分号,则在 500 毫秒后未检测到潜在的无限循环并且我的循环完成。
例如:
function setup() {
var cnt = 0 // no semicolon here..
var startTime = new Date().getTime();
for (i = 0; i < 80000; i++) {
console.log(cnt++);
}
var endTime = new Date().getTime();
console.log("done in " + (endTime - startTime) + " milliseconds");
}
给我输出:
79999
在 1737 毫秒内完成
我的问题是,为什么删除分号会破坏 p5.js 网络编辑器的无限循环检测?
【问题讨论】:
-
哪个编辑器警告你无限循环?
-
p5.js 在线编辑器
-
我在 P5.js 编辑器中看不到任何警告。当我运行您的代码时,我看到一个黑色矩形。
-
我重新运行了代码,但仍然失败。我screengrabbed编辑器,所以你可以看到错误。如果你的没有出现,那是不是我的电脑有问题?
-
我真的不确定。假设它应该创建一个黑色矩形,您的代码看起来不错,并且对我来说工作正常。我想如果您的计算机速度极慢,可能会导致此错误,但我认为 400x400 嵌套循环不会导致任何问题。如果您测量时间(使用
millis()函数),您的setup()函数需要多长时间?
标签: javascript infinite-loop p5.js