2022. 04. 17
주의할 점 위주로 정리해보았다
* 모든 코드는 자바스크립트(node.js)로 작성합니다
2. 조건문
- 조건문의 종류에는 if/else, switch, try/catch/finally가 있다
이 중 가장 기본적인 조건문은 if/else 문으로,
if (조건식) 문장 if (조건식) 문장 1 else if {문장 2} else {문장 3} |
이렇게 작성한다
* 꼭 소괄호 / 중괄호 있어야 하는가?
=> 조건식을 묶은 소괄호(())는 꼭 입력해야 한다!!
문장이 한 줄 뿐이면 중괄호가 없어도 되지만, 여러 줄이면 중괄호를 사용해서 블록 문장으로 작성한다.
+) 중괄호를 쓰지 않을 경우 잘못 해석되는 상황이 발생할 수 있으므로
문장이 한 줄이더라도 중괄호를 사용하여 작성하자.
- switch 문
표현식의 값에 따라 실행을 분기하고자 할 때 사용. 분기점 여러 개를 간결하게 표현할 수 있다는 장점이 있다
switch (표현식(즉 비교하고자 하는 값) { case 값 1 : 실행문 1 break; case 값 2 : 실행문 2 break; ... default: 실행문 n+1 |
표현식 안에 있는 값과 일치하는 값을 만날 경우 (값 1이든, 값 2이든.. case 뒤에 있는 라벨의 값 중) 해당 case의 실행문을 실행한다.
만약 break가 없다면 실행문을 실행한 뒤 블록을 빠져나오지 않고, break / return / switch 블록의 끝을 만날 때까지 발견한 모든 문장을 실행한다.
default는 switch 문의 표현식이 평가된 값이 어떠한 case 라벨과도 일치하지 않았을 때 마지막으로 실행되는 문장이다.
* 조건식 작성 시 주의사항 *
1) 동일연산자(==) 사용 시
- 동일연산자는 좌우 피연산자의 타입을 변환한 다음에 좌변과 우변이 같은지를 비교
단, 객체 타입 변수의 경우 같은 객체를 가리키는지를 판별한다.
즉 var a = [1,2,3]; var b = [1,2,3]; 이더라도 a == b 하면 결과는 false!
만약 좌우 피연산자의 타입이 다를 경우,
- undefined와 null은 동일하다고 간주
- 한쪽이 숫자고 다른 한쪽이 문자열이면 문자열을 숫자로 변환해서 비교
- 둘 중 한쪽이 논리값이면 true는 1, false는 0으로 변환해서 비교
- 한쪽이 객체고 다른 한쪽이 숫자 또는 문자열이면 객체를 toString이나 valueOf 메서드를 사용해서 원시 타입으로 변환한 다음에 비교
- 위 규칙에서 벗어나면 모두 같지 않음으로 판정
출처: 모던 자바스크립트 입문
2) 논리연산자
논리연산자에는 &&(양 옆이 모두 true여야 true), ||(둘 중 하나라도 true면 true), !(true면 false, false면 true)가 있다
- 관계연산자의 우선순위는 논리 연산자보다 높다
조건식 x > 0 && y > 0 에서 괄호를 쓸 필요가 없는 이유!
- 논리연산자의 피연산자가 논리값이 아닐 경우.
0, -0, 빈 문자열, NaN, null, undefined 는 false, 나머지는 true로 평가
내가 백준 코딩 문제를 풀면서 실수했던 것:
세 수의 값이 모두 같은 지 판단할 때,
if (a==b==c) 이렇게 작성해서는 안된다!!
이렇게 작성할 경우 먼저 a==b를 먼저 평가한 다음 a와 b가 같으면 true를 반환하고,
true == c 인지 비교하게 된다! 이 경우 c가 정수일 때 1이어야만 true가 되는 것.
따라서 세 수의 값이 모두 같은 지 판단하려면,
( (a==b) && (b==c) ) 이런 식으로 작성하자.
3. 반복문
문제 풀이 시 내가 계속 실수했던 것...
console.log()는 줄바꿈이 표현되어있는 출력함수다!!!
줄바꿈('\n')을 추가할 필요가 없다.
- String.prototype.repeat()
const hello = 'Hello';
console.log(`${hello.repeat(3)}`); 을 하면
HelloHelloHello가 출력된다!
'Coding test > baekjoon' 카테고리의 다른 글
백준 1890번 점프 (자바스크립트) (0) | 2022.07.01 |
---|---|
백준 코딩테스트 공부기록 - 11. 정렬 (0) | 2022.05.16 |
백준 코딩테스트 공부 기록 - 1: 입출력과 사칙연산 (0) | 2022.04.16 |