221108.til

Universe·2022년 11월 8일
0

study

목록 보기
41/49

챕터 3 : 조건문

조건문 기본

조건에 따라 코드를 실행하거나 실행하지 않도록 설정한다.
비교 연산자와 논리 연산자를 활용해 조건을 설정하여
조건에 따른 참 거짓을 판별한 후 분기를 나눈다.
가장 일반적으로 쓰이는 조건문은

if(조건){
	(true) 일 경우 실행할 코드
} else if(첫번째 조건이 거짓일 경우 판별할 조건){
	해당 조건이 (true) 일 경우 실행할 코드
} else {
	거짓(false) 일 경우 실행할 코드
{

if 와 else if, else 를 사용하는 조건문
쉽게 풀어쓰자면
이거 아니면 이거 아니면 이거 실행해주세요~ 가 되겠다.
이런 식으로

if(조건) {
	if(첫번째 조건이 참일 경우 판별할 조건){
		첫번째 조건과 두번째 조건 모두 참일 경우에 실행할 코드
	} else {
		첫번째 조건이 참이지만 두번째 조건은 거짓일 경우에 실행할 코드
	}
}

중첩해서 사용할 수도 있다.
이게 맞으면 이거 맞는지 체크해주시고 맞으면 이거 틀리면 이거 실행해주세요~
아래의 예제로 확인해보자

윤년을 계산하는 로직

태양력의 윤년

  1. 연수가 4로 나누어 떨어지는 해는 윤년으로 한다.
  2. 연수가 4, 100으로 나누어 떨어지는 해는 평년으로 한다.
  3. 연수가 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 ? 12참일 때 실행 : 12거짓일 때 실행 : 둘 다 거짓일 때 실행할 코드

조금 어지럽지만 중첩도 할 수 있다.
삼항연산자와 논리연산자를 이용하여 윤년 코드를 조금 더 예쁘게 만들어본다면 다음과 같다.

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일차 이지만 정말로 도움이 많이 되는 것 같다.
현직분들의 현실적인 조언같은 것도 많이 해주시고
동료가 있어서 조금 더 열심히 공부하고 찾아보게 된다.
의지를 돈으로 살 수 있다면 이런 느낌이 아닐까하고 생각해본다.

profile
Always, we are friend 🧡

0개의 댓글