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라는 타입이다. 아직 결정나지 않은 것이다.
- 숫자이다. 생각해 보면 참 이상한 경우다. NaN 말 그대로 Not a Number이지만 typeof를 해보면,
3. 선언과 호출 사이
가끔 선언을 해놓고 호출을 똑바로 못 해서 결과 값이 틀리는 경우가 종종 있다.
혹은 문자를 빼버리려 한다던가...타입별 구분을 잘 못하거나 해서 헷갈리는 경우도 있다.
- [] : 배열이다. 안에 있는 엘리먼트를 말할 수 있다.
- () : 변수를 넣을 곳이다.
- 그냥 스트링 혹은 숫자 : 선언이 되어 있다면 그것일 것이고, 중간에 타입이 바뀌는 경우도 있다.
'Coding > Today I Learned' 카테고리의 다른 글
2021.05.24(Mon.) <Git을 이용해 여러명이서 작업을 할 때> (0) | 2021.05.24 |
---|---|
2021.05.23(Sun.) <문자열 가장 마지막 자르기> (0) | 2021.05.23 |
2021.05.21(Fri.) <Git 정리> (0) | 2021.05.21 |
2021.05.20(Thu.) <CLI와 Node.js> (0) | 2021.05.20 |
2021.05.19(Wed.) (0) | 2021.05.20 |