繰り返し文の変数宣言


1つ以上の自然数を入力し、2から対応する数までの小数を返します.
function listPrimes(num) {
  
  let result = '2';
  **let isPrime = true;** 
   
  for (let i = 3; i <= num; i += 2) {
     
     for (let n = 3; n <= Math.sqrt(i); n += 2){
      if (i % n === 0) {
        isPrime = false;
        break;
      }
    }
    if (isPrime === true) {
      result = result + '-' + i;
    }
  } 
  return result;
}
全体の論理はすでに把握されているが、11以上の少数の人は回復できない.
原因が分からず、しばらくうろうろしていました.後で原因が分かった.
問題は、上記のコードの注釈処理の部分です.(コメントで表示)
繰り返し文の外でisPrime=trueと宣言すると、
繰り返し文のi%n==0の最初の9%3==0の部分で
isPrimeはfalseになります.
それなら、あの時から複文の中に
if (isPrime === true) 
この部分の意味は消えた.繰り返し文が再実行されてもisPrimeはfalseであるためです.
したがって,繰り返し文が再実行されるたびにisPrime=true値を再付与する必要があると結論した.
function listPrimes(num) {
  
  let result = '2';
   
  for (let i = 3; i <= num; i += 2) {
     **let isPrime = true;**
     for (let n = 3; n <= Math.sqrt(i); n += 2){
      if (i % n === 0) {
        isPrime = false;
        break;
      }
    }
    if (isPrime === true) {
      result = result + '-' + i;
    }
  } 
  return result;
}
(注釈処理)このような繰り返し文内でisPrime=true;書きます.