[딥다이브] 8장 제어문, 9장 타입 변화와 단축 평가

주니·2023년 4월 8일
0

딥다이브

목록 보기
4/20

8. 제어문

제어문은 조건에 따라 코드 블록을 실행하거나 반복 실행 할 때 사용한다.

블록문

  • 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 한다.
  • 언제나 문의 종료를 의미하는 자체 종결성을 갖기 때문에 블록문의 끝에는 세미콜론을 붙이지 않는다!

조건문

  • 주어진 조건식의 평가 결과에 따라 블록문의 실행을 결정한다.
  • 블록 내의 문이 하나뿐이라면 중괄호를 생략할 수 있다!
  • JavaScript에는 if...else문과 switch문이 있다.
// switch문 사용법
switch (표현식) {
	case 표현식1:
		switch: 문의 표현식과 표현식 1이 일치하면 실행;
		break //각 switch를 실행하고 나면 break로 빠져 나오기
	case 표현식2:
		switch: 문의 표현식과 표현식 2가 일치하면 실행;
		break
	default:
		switch 문의 표현식과 일치하는case가 없는 경우 실행;
}

if...else문으로 해결 가능하면 if...else 사용, 조건이 많아 switch문이 가독성이 더 좋을 경우에 switch문을 사용하자.

반복문

for문은 반복 횟수가 명확할 때 사용, while문은 반복 횟수가 불명확할 때 주로 사용한다

꾸준한 연습으로 자연스럽게 조건문과 반복문을 사용할 수 있도록 익히자.

이번 장에서 다룬 조건문과 반복문은 자세한 서술을 피했다.
일부는 아는 내용이기도 하고 이를 정리하는 것도 중요하겠지만, 필요한 내용은 후에 책을 다시 참조하거나 구글링을 통해 찾아보기로 한다.
코딩 테스트를 연습하거나, 필요한 로직을 설계해보며 제어문을 숙달하는 것이 중요❕


9. 타입 변환과 단축 평가

타입 변환

명시적 타입 변환(explicit coercion) or 타입 캐스팅(type casting) : 개발자가 의도적으로 값의 타입을 변환하는 것 ↔ 암묵적 타입 변환(implicit coercion) or 타입 강제 변환(type coercion)

암시적 타입 변환은 앞선 7장 연산자에서도 간단하게 살펴보았다.

  • 암묵적 타입 변환이 일어난다면 변환된 값이 어떻게 평가될 것인지 예측 가능해야 한다.
  • 때로는 암묵적 타입 변환이 가독성 측면에서 좋을 때도 있다.
    명시적: (10).toString()
    암묵적: 10+ ''
  • 중요한 것은 코드를 예측할 수 있어야 한다는 것! (중.코.예.)

불리언 타입으로 변환

Truty 값(참으로 평가되는 값)과 Falsy값(거짓으로 평가되는 값)

Falsy값 예시(부정적인 느낌적인 느낌..?@)

  • false
  • undefined
  • null
  • 0, -0
  • NaN
  • '' (빈 문자열)

단축 평가

논리합(||)과 논리곱(&&) 연산자를 사용한 표현식.
이를 사용해서 에러를 방지할 수 있다.

'아직 단축 평가를 사용하는데도 익숙하지 않은데?, 보다 완성도 있게 코드를 작성하면 굳이 필요한가??'

에러를 방지하기 위한 차원에서 단축평가를 사용한다 vs 에러를 방지하기 위한 클린코드를 작성한다(물론 내가 짠 코드는 항상 완벽할 수 없다) 라는 생각이 들 때, 저자는 이런 나의 생각을 읽힌듯 다음 내용이 나와있다.

옵셔널 체이닝 연산자

  • ES11에서 도입된 연산자
  • ?.는 좌항의 피연산자가 null 또는 undefined인 경우 undefined를 반환하고, 그렇지 않으면 우항의 프로퍼티를 참조한다.
var elem = null;

var value = elem?.value;
console.log(value) // null

null 병합 연산자

  • ES11에서 도입된 연산자
  • ?? 좌항의 피연산자가 null 또는 undefined인 경우 피연산자를 반환하고, 그렇지 않으면 좌항의 피연산자를 반환한다.
  • 변수에 기본값을 설정할 때 유용하다
var foo = null ?? 'default string'
console.log(foo); // 'default string'

역시 개발자의 세상은 점점 편리해진다.

0개의 댓글