[모던자바스크립트 딥다이브] 09장 타입 변환과 단축 평가
2023. 7. 25. 22:51ㆍ스터디/모던자바스크립트딥다이브
타입 변환
- 자바스크립트 모든 값은 타입이 존재한다.
- 명시적 타입 변환 : 개발자의 의도에 따라 다른 타입으로 값을 변환하는 것 (= 타입캐스팅)
- 암묵적 타입 변환 : 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환 되는 것 (= 타입 강제 변환)
- 기존 원시 값을 직접 변경하는 것이 아니라 기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것
암묵적 타입 변환
- 자바스크립트 엔진은 코드의 문맥을 고려해 암묵적으로 데이터 타입을 강제 변환할 때가 있다.
- 문자열 타입으로 변환
- 문자열 연결 연산자 '+'
- 템퍼릿 리터럴
- 숫자 타입으로 변환
- 산술 연산자비교
- 연산자
- 빈문자열, 빈배열, 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) // 테스트테스트
'스터디 > 모던자바스크립트딥다이브' 카테고리의 다른 글
[모던자바스크립트 딥다이브] 11장 객체 리터럴 (0) | 2023.07.25 |
---|---|
[모던자바스크립트 딥다이브] 10장 객체 리터럴 (0) | 2023.07.25 |
[모던자바스크립트 딥다이브] 06장 데이터 타입 (0) | 2023.07.25 |
[모던자바스크립트 딥다이브] 05장 표현식과 문 (0) | 2023.07.25 |
[모던자바스크립트 딥다이브] 04장 변수 (0) | 2023.07.25 |