JavaScript (6) 타입 변환과 단축평가

류수민·2025년 12월 22일

JavaScript

목록 보기
6/20

타입 변환이란?

자바스크립트의 모든 값을 타입이 있다.
개발자가 자신의 의도대로 다른 타입으로 변환하는 것을 명시적 타입 변환 (Explicit Coercion) 또는 타입 캐스팅 (Type Casting) 이라고 한다.
개발자의 의도와 상관없이 표현식을 평가하는 도중 자바스크립트 엔진에 의해 암묵적으로 타입이 변환되는 것을 암묵적 타입 변환 (Implicit Coercion) 또는 타입 강제 변환 (Type Coercion) 이라고 한다.

두 변환 모두 원시 값을 변경하는 것이 아닌 기존 원시 값을 사용해 새로운 원시 값을 생성한다.

명시적 타입 변환 (Explicit Coercion)

문자열 타입으로 변환

  1. String 생성자 함수를 new 연산자 없이 호출
  2. Object.prototype.toString 메서드 사용
  3. 문자열 연결 연산자 사용
String(1); // 1번 방법 -> "1"
(1).toString(); // 2번 방법 -> "1"
1 + ''; // 3번 방법 -> "1"

숫자 타입으로 변환

  1. Number 생성자 함수를 new 연산자 없이 호출
  2. parseInt, parseFloat 함수 사용 (문자열 -> 숫자만 가능)
  3. (+) 단항 산술 연산자 사용
  4. (*) 산술 연산자 사용
Number('0'); // 1번 방법 -> 0
parseInt('0'); // 2번 방법 -> 0
parseFloat('12.22'); // 2번 방법 -> 12.22
+'0'; // 3번 방법 -> 0
'0' * 1; // -> 4번 방법 -> 0

true를 숫자 타입으로 변환시 1 출력
false를 숫자 타입으로 변환시 0 출력

불리언 타입으로 변환

  1. Boolean 생성자 함수를 new 연산자 없이 호출
  2. ! 부정 논리 연산자를 두 번 사용
//Boolean() 대신 !! 써도 결과 동일
// 문자열 -> 불리언
Boolean('x'); // -> true
Boolean(''); // -> false

// 숫자 -> 불리언
Boolean(1); // -> true
Boolean(0); // -> false
Boolean(Infinity); // -> true
Boolean(NaN); // -> false

// null -> 불리언
Boolean(null); // -> false

// undefined -> 불리언
Boolean(undefined); // -> false

// 객체 -> 불리언
Boolean({}); // -> true
Boolean([]); // -> true

암묵적 타입 변환

문자열 타입으로 변환

1 + '2' //"12"
  • 연산자는 피연산자 중 하나 이상이 문자열이면 문자열 연결 연산자로 작동

숫자 타입으로 변환

1 - "1" // 0
1 * "10" // 10
1 / "one" // NaN

산술 연산자를 사용하면 숫자 타입으로 변환.
숫자 타입으로 변환이 불가능한 경우 NaN 출력

불리언 타입으로 변환

if 문이나 for 문과 같은 제어문 또는 삼항 조건 연산자의 조건식의 평가 결과를 불리언 값으로 변환

false 값

  • false
  • undefined
  • null
  • 0
  • -0
  • NaN
  • ''

나머지는 모두 true

단축 평가

논리 연산자를 사용한 단축 평가

'Cat' && 'Dog' // "Dog"

논리곱 (&&)은 두 피연산자가 모두 true 일때 true 반환.
'Cat'은 true이고 두번째 피연산자인 'Dog'을 그대로 반환.

'Cat' || 'Dog' // "Cat"

true || anything -> true
false || anything -> anything
true && anything -> anything
false && anything -> false

옵셔널 체이닝 연산자

?. 는 좌항의 피연산자가 null 이나 undefined 이면 undefined 반환하고 그렇지 않으면 프로퍼티 참조를 이어감.

null 병합 연산자

?? 는 좌항의 피연산자가 null 이나 undefined 이면 우항의 피연산자 반환하고 그렇지 않으면 좌항의 피연산자 반환함.

0개의 댓글