09장 타입 변환과 단축 평가
모던 자바스크립트 딥다이브 09장 타입 변환과 단축 평가
타입 변환
자바스크립트 모든 값은 타입이 존재한다.
명시적 타입 변환 : 개발자의 의도에 따라 다른 타입으로 값을 변환하는 것 (= 타입캐스팅)
암묵적 타입 변환 : 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환 되는 것 (= 타입 강제 변환)
기존 원시 값을 직접 변경하는 것이 아니라 기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것
암묵적 타입 변환
자바스크립트 엔진은 코드의 문맥을 고려해 암묵적으로 데이터 타입을 강제 변환할 때가 있다.
문자열 타입으로 변환
문자열 연결 연산자 '+'
템프릿 리터럴
숫자 타입으로 변환
산술 연산자
비교 연산자
빈문자열, 빈배열, null, false는 0으로, true는 1로 변환된다.
불리언 타입으로 변환
조건식 : 제어문 또는 삼항조건연산자의 조건식은 불린언으로 평가되어야 하기 때문에 조건식의 값들은 불리언 타입으로 암묵적 형 변환이 이루어진다.
Falsy 값
false
undefined
null
0,-0
NaN
''
명시적 타입 변환
문자열 타입으로 변환
String(1)
(1).toString()
1+''
숫자 타입으로 변환
Number('0')
parseInt('0'), parseFloat('10.02')
단항 산술연산자 사용
+'0'
산술연산자 사용
'0'*1
불리언 타입으로 변환
Boolean('') // false
,Boolean('가나다') //true
부정논리연산자 두번 사용,
!!'x' // true
단축 평가
표현식을 평가하는 도중에 결과가 확정된 경우 나머지 평가 과정을 생략하는 것을 말한다.
여러 패턴에서 유용하게 사용된다.
if 대체
var done = true
var message = ''
message = done && '완료'
// 완료
var done = false
var message = ''
message = done || '미완료'
// 미완료
객체를 참조하기전 객체 유무 확인하고 접근하기
var obj = null
var value = obj.key1 // 타입 에러 바로 던져버림
//////////////////
var value = obj&&obj.key1 // null로 평가, 따라서 타입에러 안남
함수 매개변수에 기본값 설정할 때
function test(value) {
value = value || '기본값';
// 매개변수가 넘어오지 않으면 '기본값'을 사용한다.
}
옵셔녈 체이닝
ES11에서 추가됨
좌항의 피연산자가 null이나 undefined로 참조할 수 없을 경우 undefined를 반환하고, 참조 가능할경우 참조를 이어간다.
var obj = null
var value = obj.key1 // 타입 에러 바로 던져버림
///////////////
var obj = null
var value = obj?.obj.key1 // undefiend를 반환함.
null병합 연산자
ES11에서 추가됨
좌항이 null이나 undefined일 경우, 우항을 반환, 아니면 좌항을 반환
삼항조건식이랑 비슷해보임
var test = null ?? '테스트테스트'
console.log(test) // 테스트테스트
Last updated