【发布时间】:2018-07-06 06:52:53
【问题描述】:
我正在尝试打印两个给定数字(num1 和 num2)之间的所有质数。如果我在 isPrime 函数的 for 循环中使用不同的变量名,那将按预期工作。但是当使用与i 相同的变量名时,它会进入一个无限循环。为什么会这样?
下面是我的代码:
showPrimeNumbers();
function showPrimeNumbers(){
var num1 = 10;
var num2 = 15;
for (i=num1; i<=num2; i++){
if(isPrime(i)){
console.log(i+" is a prime number.");
}
}
}
function isPrime(num){
var flag = true;
for (i=2;i<=num-1;i++){
if(num%i == 0){
flag=false;
break;
}
}
return flag;
}
【问题讨论】:
-
你没有在两个函数中声明
i,它是全局的,两个循环都被它的值弄乱了。 -
因为
i是全球性的。在每个for中单独声明它。所以,而不是for (i有for ( var i -
顺便说一句,你的
isPrime函数可以稍微快一点 stackoverflow.com/questions/40200089/is-a-number-prime
标签: javascript scope