这个js程序应显示前100个素数,但每次都会崩溃,我找不到错误!有人能指出我调试js代码的最佳方法吗?!谢谢!
// initialisation of the array p holding the first 100 prime numbers
var p = [];
// set the first prime number to 2
p.push(2);
// find the first 100 prime numbers and place them in the array p
var i = 3;
while (p.length < 100) {
var prime = true;
loop:
for (var item in p){
if (i%item === 0){
prime = false;
break loop;
}
}
if (prime)
p.push(i);
i = i + 2;
}
// display the first 100 prime numbers found
var i=1;
for (var item in p){
document.writeln(i,item);
i++;
}
答案 0 :(得分:2)
变化:
for (var item in p) {
为:
for (var i = 0; i < p.length; i++) {
item = p[i];
for-in
遍历对象或数组的键,而不是值。
答案 1 :(得分:1)
首先,将您的算法放入函数并将此函数放入页面html中。像:
<html>
<head>
<script>
function test(){
// initialisation of the array p holding the first 100 prime numbers
var p = [];
// set the first prime number to 2
p.push(2);
// find the first 100 prime numbers and place them in the array p
var i = 3;
while (p.length < 100) {
var prime = true;
loop:
for (var item in p){
if (i%item === 0){
prime = false;
break loop;
}
}
if (prime)
p.push(i);
i = i + 2;
}
// display the first 100 prime numbers found
var i=1;
for (var item in p){
document.writeln(i,item);
i++;
}
}
</script>
</head>
<body>
<a onmouseclick="test()">test</a>
</body>
</html>
然后在Chrome或Firefox中打开此页面。
按F12打开调试面板。
然后转到Sources标签dans在左侧视图中选择您的页面(例如:test.html)并在行var p =[];
上进行停止点调试,然后单击页面上的链接测试以开始调试。 F10进入另一条线,F11进入方法,F8进入下一个停止点。
希望有所帮助。
答案 2 :(得分:1)
答案 3 :(得分:0)
这是最终工作代码的样子:
// initialisation of the array p holding the first 100 prime numbers
var p = [];
// set the first prime number to 2
p.push(2);
// find the first 100 prime numbers and place them in the array p
var i = 3;
var item;
var prime;
while (p.length < 100) {
prime = true;
for (item in p){
if (i%p[item] === 0){
prime = false;
break;
}
}
if (prime)
p.push(i);
i = i + 2;
}
// display the first 100 prime numbers found
var s = "";
for (item in p){
if (item != p.length - 1){
s = s + p[item] + ",";
}
else{
s = s + p[item];
}
}
alert(s);