05
23

1. 나만의 소수 공략법

  • 소수를 이중 반복문을 이용해 구해본다.
  • 결괏값은 문자열 '-'로 연결되어 있다.
  • 분명, 효율적인 방법은 아니다. 하지만, 이렇게 하면 답은 나온다. 꼭 리펙토링 해보아야 한다.
function LisPrimes(num) {
    let result = '2'; //소수는 1과 자기 자신을 제외한 숫자를 몫으로 가지지 않는 수이다. 이때, 문자열 '-' 과 연결해야 함을 생각하면 항상 들어갈 소수인 2는 빼둔다.
    for(let i = 3; i <= num; i++) { //3부터 소수가 될 수 있으니 3부터 i를 준다.
      let isPrime = true; //일단은 isPrime으로 이 수가 소수가 될 수 있음을 선언한다.
        for(let j = 2; j < i; j++) { 
          if(i % j === 0) { //3이상부터 num까지의 모든 숫자를 서로서로 다 나눠본다.
          isPrime = false; //이때, 나눠진다면 2또는 자기 자신이외의 숫자로 나눠서 떨어진다는 이야기, 즉 소수가 아니게 되므로 false로 빼버린다.
          }
        } if(isPrime) { //그래서 그 수가 소수라면
          result = result + '-' + i; //result에 문자열 '-'와 붙여 넣어준다.
        }
    } return result; //끝으로 리턴한다.
}

2. 가끔 틀리는 타입별 계산

'스트링 + 다른 타입' 의 경우, 스트링 뒤의 어떤 타입이 오든, 스트링 타입으로 바꿔서 더해 버린다.

  • NaN는 과연 숫자일까?
    • 숫자이다. 생각해 보면 참 이상한 경우다. NaN 말 그대로 Not a Number이지만 typeof를 해보면,
      분명 number 타입이다. 숫자가 아니라는 숫자라는 것이다!
    • undefined는 undefined라는 타입이다. 아직 결정나지 않은 것이다.

3. 선언과 호출 사이

가끔 선언을 해놓고 호출을 똑바로 못 해서 결과 값이 틀리는 경우가 종종 있다.
혹은 문자를 빼버리려 한다던가...타입별 구분을 잘 못하거나 해서 헷갈리는 경우도 있다.

  • [] : 배열이다. 안에 있는 엘리먼트를 말할 수 있다.
  • () : 변수를 넣을 곳이다.
  • 그냥 스트링 혹은 숫자 : 선언이 되어 있다면 그것일 것이고, 중간에 타입이 바뀌는 경우도 있다.
COMMENT