조건에 따라 코드를 실행하거나 실행하지 않도록 설정한다.
비교 연산자와 논리 연산자를 활용해 조건을 설정하여
조건에 따른 참 거짓을 판별한 후 분기를 나눈다.
가장 일반적으로 쓰이는 조건문은
if(조건){
참(true) 일 경우 실행할 코드
} else if(첫번째 조건이 거짓일 경우 판별할 조건){
해당 조건이 참(true) 일 경우 실행할 코드
} else {
거짓(false) 일 경우 실행할 코드
{
if 와 else if, else 를 사용하는 조건문
쉽게 풀어쓰자면
이거 아니면 이거 아니면 이거 실행해주세요~
가 되겠다.
이런 식으로
if(조건) {
if(첫번째 조건이 참일 경우 판별할 조건){
첫번째 조건과 두번째 조건 모두 참일 경우에 실행할 코드
} else {
첫번째 조건이 참이지만 두번째 조건은 거짓일 경우에 실행할 코드
}
}
중첩해서 사용할 수도 있다.
이게 맞으면 이거 맞는지 체크해주시고 맞으면 이거 틀리면 이거 실행해주세요~
아래의 예제로 확인해보자
태양력의 윤년
- 연수가 4로 나누어 떨어지는 해는 윤년으로 한다.
- 연수가 4, 100으로 나누어 떨어지는 해는 평년으로 한다.
- 연수가 4, 100, 400으로 나누어 떨어지는 해는 윤년으로 둔다.
function 윤년계산(year) {
if (year % 4 === 0) {
if (year % 100 === 0) {
if (year % 400 === 0) {
return "윤년";
} else {
return "평년";
}
} return '윤년'
} else {
return "평년";
}
}
🤔
엄청 햇갈리고 복잡하고 난해하다
이때 논리연산자를 사용해볼 수 있다.
논리연산자는 논리식을 이용해 참 거짓을 판별한다.
and, or, xor 등등 여러가지 조건을 설정할 수 있지만
대표적으로 많이 쓰이는 논리연산자는
&&(AND) , ||(OR), !(NOT) 연산이 있다.
간단하게 요약하자면
and 연산자(&&) 는 두 값이 모두 true 일 경우에만 true,
or 연산자(||) 는 두 값중 하나만 true 이어도 true 를 반환한다.
그러면 위의 윤년 로직을 조금 고쳐볼 수 있겠다.
function 윤년계산(year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ) {
return '윤년'
} else {
return '평년'
}
}
훨씬 깔끔하고 예뻐졌다 !
그런데 조금 더 예쁘게 꾸며볼 수 있다.
삼항연산자 라고도 하는데
조건 ? 참 일때 실행할 코드 : 거짓 일 때 실행할 코드
? 와 : 로 조건문을 표현할 수 있다.
조건1? 조건1이 참일 때 판단할 조건2 ? 1참 2참일 때 실행 : 1참 2거짓일 때 실행 : 둘 다 거짓일 때 실행할 코드
조금 어지럽지만 중첩도 할 수 있다.
삼항연산자와 논리연산자를 이용하여 윤년 코드를 조금 더 예쁘게 만들어본다면 다음과 같다.
function 윤년계산(year) {
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ? "윤년" : "평년";
}
구현하고자 하는 목표는 모두 같지만 이처럼 표현은 다양하게 할 수 있다
🥳
switch / case / break / default 키워드를 이용해 조건문을 구성할 수 있다.
switch (data) {
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
default:
break;
}
switch 는 조건문의 시작을,
case 는 조건문의 분기를,
break 로 조건문의 끝맽음을,
default 로 모든 조건을 만족하지 않았을 경우 실행할 코드를 설정해줄 수 있다.
default 는 생략할 수 있다.
switch 조건문은 잘 사용하진 않지만
한 변수에 대해서 여러 값을 비교할 때
주로 사용한다.
if 조건문과는 메모리 할당에 관한 부분이 조금 다른데 트럼프카드를 생각하면 쉽다.
if 는 카드를 한장 한장 넘겨가면서 분기를 진행하는데 비해
switch 는 카드를 case 수 만큼 뽑아놓은 다음 분기를 진행하는 식이다.
따라서 switch 는 그만큼의 비교적 많은 메모리를 할당한다.
왜냐하면 if 는 그때 그때 카드를 넘겨가면서 분기를 수행하다가
조건을 모두 수행했다면 그 즉시 값을 반환하는데 반해
switch 는 일단 모든 case 를 가져와서 차례로 분기를 수행하기 때문이다.
개발 용어로 분기 테이블 혹은 점프 테이블 이라고 하는데 사실 빛 좋은 개살구 인것이..
정수형이 아닌경우에는 이러한 성능상의 이점도 살릴 수 없기 때문이다.
🤔
멘토분들이나 팀원분들이 도와주시니까 좀 현실적인 조언들을 많이 들었다.
우선.. 개발 블로그 작성할 때 글 제목을 날짜.til 이런식으로 적으면 누가 보고 싶겠냐고
😢
사실 글을 작성할 때 누군가가 봐도 좋지만 보지않아도 좋다는 생각으로
글 제목을 크게 신경쓰지 않았는데
글 제목으로 내가 쓴 글을 읽고싶게 만드는 것도 어느정도 필요하다는 생각이 들었다.
따로 이렇게 til 을 작성할 때는 크게 해당사항이 없겠지만,
예를들어 어떤 오류를 어떻게 수정했다~ 어떤 기능 개발을 어떻게 해봤다~ 같은
개발자라면 누구나 흥미가 생길만한 주제라면 조금 더 어필을 해보는 것도 좋겠다.
표현하지 않으면 알아주지 않는게 당연하니까.
언젠가는 내가 찾아 수많은 선배 개발자들의 글을 보고 배웠던 것 처럼
누군가도 내 글을보고 아주 사소한 내용이라도 도움이 됐으면 좋겠다고 생각한다.
또한, 여러가지 라이브러리를 직접 구현해보면서 느껴봤으면 좋겠다고 조언해주셨다.
예를들어, 캐러셀이나 슬라이드 같은 경우.
비록 라이브러리를 사용하면 더 멋지고 성능이 좋은 구현물이 나오겠지만
직접 구현하면서 어떤 식으로 동작하는지 이해하고 커스텀 해보는게
초보 개발자 입장에서는 도움이 많이 된다고.
이 부분은 정말 크게 와 닿았다.
얼마전에 부트스트랩 클론코딩을 해보면서 느꼈던 경험과 조금 비슷할까 ?
정말 사소한 박스조차도 세부적인 내용을 코딩하다보면 고려해야 할 상황이 정말 많았다.
좀 더 폭넓은 경험을 쌓아보라는 취지셨던 것 같다.
조금 더 현실적인 조언이 있었는데,
개발자는 지금 찍어내듯 나오고 있다고 한다.
지금 뭐 대충 어중이떠중이 시간만 때우다보면 그냥 딱 그저 그런 어중이떠중이가 된다고.
남들 하는만큼만, 이정도면 됐겠지, 이런 생각으로는 개발자를 길게 할 수 없다고.
지금도 과거에도 코딩은 여전히 재밌지만 태도적 측면에서는 조금 달랐던 것 같다.
프론트엔드가 하고싶었던 이유도 안일한 마음가짐으로 세상을 살고싶지 않았기 때문이었는데
매일매일 새로운 기술을 배워보고 연마하고 싶어서였는데
조금 퇴색된 느낌이 없지않았다.
좀 더 마음을 다잡는 계기가 될 수 있었던 것 같다.
부트캠프의 일정이 고작 2일차 이지만 정말로 도움이 많이 되는 것 같다.
현직분들의 현실적인 조언같은 것도 많이 해주시고
동료가 있어서 조금 더 열심히 공부하고 찾아보게 된다.
의지를 돈으로 살 수 있다면 이런 느낌이 아닐까하고 생각해본다.