[JavaScript] 타입 변환 / 단축 평가
타입 변환
Integer.parse() / x.toString() 처럼 개발자가 명시적으로 타입 변환을 선언하는 경우도 있지만, 개발자의 의도와는 상관없이 표현식을 평가하는 중 가급적 에러 발생을 피하기 위해 엔진이 암묵적으로 타입을 변환하는 경우도 있다.
암묵적 타입 변환이 발생 시 원시 타입 중 하나로 타입이 자동으로 변환된다. 그 예시를 알아보자.
1 + '2' // <12> 지난번에 언급했다. + 연산자는 피연산자가 문자열을 포함하면 concatenate를 수행한다.
`1 + 1 = ${1 + 1}` // 표현식의 평가 결과가 문자열 타입으로 변환된다.
1 - '1' // <0> + 외의 산술 연산자는 모두 숫자 타입으로 형변환을 진행한다.
'1' > 0 // <true> 비교 연산지는 bool값을 만든다. 피연산자를 숫자 타입으로 바꿔서 작동한다.
+'' // <0> + 단항 연산자는 숫자 타입으로 타입 변환을 수행한다. 이 때 0으로 변환되는 경우는 빈 문자열 / '0' / null / false / [] 등
// boolean 타입으로 형변환 시 false가 되는것들은 외워두자. false / undefined / null / 0 / NaN / ''
문자열 0 ('0')과 숫자 0 (0)을 헷갈리지 않도록 조심하자.
문자열 타입으로의 형변환은 다음과 같이 할 수 있다.
- String()
- ().toString()
- true + ''
숫자 타입으로의 형변환은 다음과 같이 할 수 있다.
- Number()
- parseInt()
- +
- *
boolean 타입으로의 형변환은 다음과 같이 할 수 있다.
- !
- !!
- Boolean()
단축 평가
논리 연산자는 단축 평가 규칙을 따른다.
'Something' && 'Anything' // Something이 true이므로 Anything을 평가하는데, 이 때 Anything도 true이므로 'Anything'을 반환한다.
'Something' || 'Anything' // Something이 true이므로 다음 피연산자를 확인하지 않고 표현식을 평가할 수 있다. 'Something' 반환.
다른 프로그래밍 언어에서 볼 수 없는 성질이라서 생소하지만, 객체와 함수를 다룰 때 유용하게 사용된다.
단축 평가의 몇 가지 예시를 살펴보자.
let something = null;
let anything = something?.anything;
// something이 null이나 undefined이면 undefined를 반환하고, 그렇지 않으면 우측의 property 참조를 진행한다.
let anything = null ?? 'asdf'
// null병합 연산자 ??는 좌측의 피연산자가 null이나 undefined이면 우측의 피연산자를 반환하고, 그렇지 않으면 좌측의 피연산자를 반환한다.
null병합 연산자 ??는 논리합 연산자 ||를 보완하기 위해 등장했고, 옵셔널 체이닝 연산자 ?.는 논리곱 &&를 보완하기 위해 등장했다.
반응형
'Programming Language > JavaScript' 카테고리의 다른 글
[JavaScript] 스코프 (0) | 2022.03.10 |
---|---|
[JavaScript] 함수 (0) | 2022.03.10 |
[JavaScript] 연산자 / 제어문 (0) | 2022.03.08 |
[JavaScript] 리터럴 / 타입 (0) | 2022.03.07 |
[JavaScript] 입문 / 변수 (0) | 2022.03.07 |
댓글
이 글 공유하기
다른 글
-
[JavaScript] 스코프
[JavaScript] 스코프
2022.03.10 -
[JavaScript] 함수
[JavaScript] 함수
2022.03.10 -
[JavaScript] 연산자 / 제어문
[JavaScript] 연산자 / 제어문
2022.03.08 -
[JavaScript] 리터럴 / 타입
[JavaScript] 리터럴 / 타입
2022.03.07