Javascript 为什么就这么过去了?我想知道更多我需要解释的事情

Javascript 为什么就这么过去了?我想知道更多我需要解释的事情,javascript,if-statement,scope,closures,Javascript,If Statement,Scope,Closures,我写了另一个答案。但我不明白这一点 。。虽然我运行chrome调试器,但我不能很好地理解 result = true // is passed 我不太明白。我提交了另一个答案,但我想知道为什么它只是通过。 我需要解释更多,我想从这个代码修复 function isPrime(num) { let result; for(let i = 1 ; i <= num ; i++) { if(num[i] / num[i] === 1 && num[i] / num[i]

我写了另一个答案。但我不明白这一点

。。虽然我运行chrome调试器,但我不能很好地理解

result = true
// is passed
我不太明白。我提交了另一个答案,但我想知道为什么它只是通过。 我需要解释更多,我想从这个代码修复

function isPrime(num) {
let result;
for(let i = 1 ; i <= num ; i++) {
  if(num[i] / num[i] === 1 && num[i] / num[i] === num[i]){
    result = true
  } else {
    result = false
  }
}
  return result
}
debugger;
let output = isPrime(2);
console.log(output); // --> true

output = isPrime(6);
console.log(output); // --> false

output = isPrime(17);
console.log(output); // --> true
函数isPrime(num){
让结果;
对于(设i=1;i为真)
输出=iPrime(6);
console.log(输出);//-->false
输出=iPrime(17);
console.log(输出);//-->true

根据维基百科

素数(或素数)是大于1的自然数,它不是两个较小的自然数的乘积。例如,5是素数,因为将它写成乘积的唯一方法,1×5或5×1,涉及5本身

函数isPrime(num){
//步骤1:过滤器1,负数和十进制数
如果(num==1 | | num<0 | | num%1!==0){
返回false;
}
//步骤2:将num除以较小的数字
设除数=num-1;
while(除数>1){
常数余数=num%除数;
//如果num可以除以一个较小的数,那么它不是素数
如果(余数==0){
返回false;
}
除数-=1;
}
//num是素数
返回true;
}
设输出=isPrime(2);
console.log(输出);//-->true
输出=iPrime(6);
console.log(输出);//-->false
输出=iPrime(17);
console.log(输出);//-->true
输出=iPrime(1);
console.log(输出);//-->false
输出=isPrime(-12);
console.log(输出);//-->false
输出=iPrime(78.25);
console.log(输出);//-->false
输出=iPrime(-12.5);
console.log(输出);//-->false

这显然不是确定一个数字是否为素数的有效函数。
结果在i的每次迭代中都会被覆盖,这意味着只有最后一次迭代/测试才重要。这不是right@ControlAltDel被覆盖…为什么被覆盖?为什么会发生这种情况?“为什么被覆盖过度?”由于您在每次迭代中都会更改有关调试时观察到的行为的结果,因此在屏幕截图中,您处于循环的第一次迭代中(即
i
设置为
1
)。执行在第7行停止,这表示正在执行
else
块。这意味着跳过了第5行上的赋值,这就是为什么
result
仍然包含值
undefined
。在调试器中执行另一步后,一旦执行第7行中的语句,
result
将具有值e
false
已分配。
function isPrime (num) {
  // step 1: filter 1, negative numbers and decimal numbers
  if (num === 1 || num < 0 || num % 1 !== 0) {
    return false;
  }

  // step 2: dividing num by smaller numbers
  let divisor = num - 1;

  while (divisor > 1) {
    const remainder = num % divisor;

    // if num is divisible by dividing a smaller number, it's not a prime
    if (remainder === 0) {
      return false;
    }

    divisor -= 1;
  }

  // num is a prime
  return true;
}

let output = isPrime(2);
console.log(output); // --> true

output = isPrime(6);
console.log(output); // --> false

output = isPrime(17);
console.log(output); // --> true

output = isPrime(1);
console.log(output); // --> false

output = isPrime(-12);
console.log(output); // --> false

output = isPrime(78.25);
console.log(output); // --> false

output = isPrime(-12.5);
console.log(output); // --> false