일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- TypeScript
- DFS
- Redux
- Algorithm
- 프로그래머스
- BFS
- Data Structure
- 리트코드
- LeetCode
- db
- react
- 다이나믹 프로그래밍
- git
- 그레이들
- vscode
- Graph
- frontend
- DP
- 알고리즘
- Database
- CS
- Python
- network
- 자바
- 백준
- 동적 계획법
- Javascript
- VIM
- java
- 안드로이드
Archives
- Today
- Total
늘 겸손하게
JavaScript - 암묵적 타입 변환 본문
암묵적 타입 변환 - Implicit coercion
자바스크립트에서는 암묵적 타입 변환이 자주 일어난다. 암묵적 타입 변환은 개발자의 의도와 상관없이 일어나므로 명시적 타입 변환만 강제하면 값의 타입을 예측하기 쉬워질 수 있으나 암묵적 타입 변환이 가독성이 더 좋은 장점이 있기 때문에 암묵적 타입 변환을 잘 이해하도록 하자.
암묵적 타입 변환이 발생하면 원시 타입인 문자열, 숫자, 불리언 중 하나로 타입이 자동 변환된다.
1. 문자열 타입 변환
+ 연산자는 피연산자 중 하나 이상이 문자열 타입이라면 다른 모든 피연산자를 암묵적으로 문자열로 변환한 후에 연결한다.
예시
let one = '1' + 5;
let two = 1 + '5';
let three = 2 + '5' + 9;
console.log(one); // 15
console.log(two); // 15
console.log(three); // 259
2. 숫자 타입 변환
산술 연산자의 역할은 숫자 값을 만드는 역할이므로 피연산자들은 문맥상 숫자 타입이어야 한다. 그래서 산술 연산자의 피연산자들은 숫자 타입으로 암묵적 타입 변환된다. 이때 숫자 타입으로 변환할 수 없는 경우에 표현식의 결과는 NaN (Not a Number)이 된다.
예시
let result1 = 10 - '2';
let result2 = 20 - '5';
let result3 = 100 - undefined;
console.log(result1); // 8
console.log(result2); // 15
console.log(result3); // NaN
3. 불리언 타입으로 변환
주로 if, for문과 같은 제어문의 조건식에서 불리언 타입으로 변환이 일어난다. 조건식은 참/거짓으로 평가되어야 하는 표현식으로 자바스크립트 엔진은 조건식의 결과를 불리언 타입으로 암묵적 타입 변환한다.
이때 자바스크립트 엔진은 불리언 타입이 아닌 값을 Truthy 값 (참으로 평가되는 값) 또는 Falsy 값(거짓으로 평가되는 값)으로 구분한다.
아래는 false로 평가되는 Falsy 값.
- false
- undefined
- null
- 0, -0
- NaN
- '' (빈 문자열)
그 외의 값은 모두 true로 평가되는 Truthy 값이다.
예시
function isFalsy(input) {
if (!input) console.log(input + ' is falsy value');
}
isFalsy(false); // false is falsy value
isFalsy(undefined); // undefined is falsy value
isFalsy(null); // null is falsy value
isFalsy(0); // 0 is falsy value
isFalsy(NaN); // NaN is falsy value
isFalsy(''); // is falsy value
isFalsy(true); // 실행 안됨
isFalsy(100); // 실행 안됨
isFalsy(1); // 실행 안됨
isFalsy("Hello world"); // 실행 안됨
'Programming > JavaScript' 카테고리의 다른 글
JavaScript - for / in & for / of (0) | 2023.08.01 |
---|---|
JavaScript - 객체 속성 규칙 (0) | 2023.07.15 |
JavaScript : + 연산자 문자열 연결 (0) | 2023.07.15 |
JavaScript - fetch (0) | 2023.06.12 |
JavaScript - 디스트럭처 (구조 분해 할당) (3) | 2023.06.08 |