728x90
타입 변환
- 값의 타입이 변경되는 것
- 명시적 타입 변환 == 타입 캐스팅 --> 개발자가 의도적으로 변환
- 암묵적 타입 변환 == 타입 강제 변환 --> 자바스크립트 엔진이 알아서 변환
- 타입 변환은 기존 원시 값을 변경하지 못함 --> 원시 타입은 Immutable value이기 때문
- 기존 원시 값을 사용하여 다른 타입의 새로운 원시 값을 생성하는 것
- 암묵적 타입 변환은 새로운 타입의 값을 단 한 번만 사용하고 버림 --> Garbage Collection 대상
암묵적 타입 변환
- 자바스크립트 엔진이 알아서 값의 타입을 변환함
문자열 타입으로 변환
- 템플릿 리터럴의 표현식(
${}
) 삽입 기능은 식의 평가 결과를 string 타입으로 암묵적으로 변환함
숫자 타입으로 변환
- 자바스크립트 엔진은 산술 연산자의 피연산자 중에서 숫자가 아닌 값을 숫자로 변환하여 연산 결과 값을 반환함
- 숫자 타입으로 변환할 수 없는 값이 있으면 그 연산은
NaN
- 비교 연산자는 Boolean 값을 반환 --> 비교대상이 숫자 타입이어야 함 --> 숫자로 타입 변환이 일어남
+
단항 연산자는 피연산자를 숫자 타입으로 변환함''
,[]
,null
,false
--> 0true
--> 1{객체}
,[비어있지 않은 배열]
,undefined
는 숫자로 변환 불가능 -->NaN
불리언 타입
- 자바스크립트 엔진은 boolean이 아닌 값을
Truthy
,Falsy
로 구분함 Truthy
-> true,falsy
--> false로 암묵적 타입 변환이 일어남Falsy
false
,undefined
,null
,0
,-0
,NaN
,''
- 나머지는 모두
Truthy
명시적 타입 변환
- 개발자가 의도적으로 값의 타입을 변환함
- 방법 : 표준 빌트인 생성자 함수를
new
없이 호출, 빌트인 메서드 사용, 암묵적 타입 변환 이용
문자열 타입으로 변환
String
생성자 함수를new
없이 호출Object.prototype.toString()
이용- 문자열 연결 연산자(
+
) 사용
숫자 타입으로 변환
number
생성자 함수를new
없이 호출parseInt(string)
,parseFloat(string)
함수를 사용+
단항 산술 연산자 사용*
산술 연산자 사용
불리언 타입으로 변환
Boolean
생성자 함수를new
없이 호출!
부정 논리 연산자를 두 번 사용
단축 평가
&&
논리곱 연산자 : 2개의 피연산자가 모두 true일 때, 2번째 피연산자를 그대로 반환함true && 어떤 값
--> 어떤 값false && 어떤 값
--> false
||
논리합 연산자 : 2개의 피연산자 중 1개라도 true일 때, true를 반환함true || 어떤 값
--> truefalse || 어떤 값
--> 어떤 값
- 단축평가는 기본값을 설정할 때, null이나 undefined일 수도 있는 프로퍼티를 참조할 때 유용함
옵셔널 체이닝 연산자
?.
: ES11에서 도입됨- 좌항의 피연산자가
null
이나undefined
인 경우undefined
를 반환, 아니면 우항의 프로퍼티 참조를 진행함 - 좌항 값이
Falsy
라도null
,undefined
만 아니면 우항을 참조함
null 병합 연산자
??
: ES11에서 도입됨- 좌항의 피연산자가
null
,undefined
라면 우항의 피연산자를 반환하고, 아니라면 좌항의 피연산자를 반환함 - 변수에 기본값을 설정할 때 좋음. ex)
let name = null ?? '정용';
--> name == 정용
학습 도서
- '모던 자바스크립트 Deep Dive', 이웅모 저, 위키북스
'Language | Basic > JavaScript' 카테고리의 다른 글
[JavaScript 스터디] 원시 값, 객체 비교 (0) | 2021.01.22 |
---|---|
[JavaScript 스터디] 객체 리터럴 (0) | 2021.01.22 |
[JavaScript 스터디] 제어문 (0) | 2021.01.22 |
[JavaScript 스터디] 연산자 (0) | 2021.01.22 |
[JavaScript 스터디] 데이터 타입 (0) | 2021.01.22 |