카테고리 없음

[모던 자바스크립트 Deep Dive] 9장 - 타입 변환과 단축 평가

개발찾아 삼만리 2024. 12. 19. 10:48

1. 타입 변환이란?

자바스크립트의 타입 변환에는 두 가지가 있습니다:

  • 명시적 타입 변환 (타입 캐스팅)
  • 암묵적 타입 변환 (강제 타입 변환)

 


 

2. 암묵적 타입 변환

2.1 문자열 변환

// 숫자 -> 문자열
1 + '2' // "12"

// 불리언 -> 문자열
true + '' // "true"

// null -> 문자열
null + '' // "null"

// undefined -> 문자열
undefined + '' // "undefined"

// 객체 -> 문자열
({}) + '' // "[object Object]"

2.2 숫자 변환

// 문자열 -> 숫자
+'0' // 0
+'1' // 1
+'string' // NaN

// 불리언 -> 숫자
+true // 1
+false // 0

// null -> 숫자
+null // 0

// undefined -> 숫자
+undefined // NaN

2.3 불리언 변환

// Falsy 값들
!!false // false
!!0 // false
!!'' // false
!!null // false
!!undefined // false
!!NaN // false

// Truthy 값들
!!{} // true
!![] // true
!!'string' // true
!!1 // true

 


 

3. 명시적 타입 변환

3.1 문자열 타입으로 변환

// String 생성자 함수
String(123) // "123"
String(true) // "true"

// toString() 메서드
(123).toString() // "123"
(true).toString() // "true"

// 템플릿 리터럴
`${123}` // "123"

3.2 숫자 타입으로 변환

// Number 생성자 함수
Number('123') // 123
Number(true) // 1

// parseInt, parseFloat
parseInt('123') // 123
parseFloat('12.34') // 12.34

// + 단항 연산자
+'123' // 123

3.3 불리언 타입으로 변환

// Boolean 생성자 함수
Boolean('string') // true
Boolean('') // false

// !! 연산자
!!'string' // true
!!'' // false

 


 

4. 단축 평가

4.1 논리 연산자 (&&, ||)

// AND (&&) 연산자
'Cat' && 'Dog' // "Dog"
false && 'Dog' // false

// OR (||) 연산자
'Cat' || 'Dog' // "Cat"
false || 'Dog' // "Dog"

4.2 옵셔널 체이닝 연산자 (?.)

const obj = null;
obj?.value // undefined

4.3 null 병합 연산자 (??)

null ?? 'default' // "default"
undefined ?? 'default' // "default"
'' ?? 'default' // ""
0 ?? 'default' // 0

 


 

5. 실용적인 활용 예시

5.1 기본값 설정

// OR 연산자 활용
function printName(name) {
    const userName = name || 'Guest';
    console.log(userName);
}

// null 병합 연산자 활용
function printName(name) {
    const userName = name ?? 'Guest';
    console.log(userName);
}

5.2 조건부 실행

// AND 연산자 활용
isLoggedIn && displayUserInfo();

// 옵셔널 체이닝 활용
user?.address?.street

 


 

정리

  • 자바스크립트는 `유연한 타입 변환`을 지원합니다 === `동적 타입 언어`이다.
  • 암묵적 타입 변환은 예기치 않은 결과를 가져올 수 있으므로 주의가 필요합니다
  • 명시적 타입 변환을 사용하면 코드의 의도를 명확히 할 수 있습니다
  • 단축 평가는 조건부 실행이나 기본값 설정에 유용합니다