Skip to content

Latest commit

 

History

History
189 lines (115 loc) · 6.83 KB

07. Type Conversion.md

File metadata and controls

189 lines (115 loc) · 6.83 KB

07. Type Conversion

자바스크립트에서 **타입 변환(type conversion, type coercion)**은 기존의 원시 값으로 다른 원시 값을 생성하는 것이다. 두 가지 타입의 형 변환이 있다.

  1. 묵시적 형변환(implicit conversion)
  2. 명시적 형변환(explicit conversion)

7.1 Implicit Conversion

  • 묵시적 형변환은 자바스크립트 엔진에 의해서 암묵적으로 이루어진다.
    • 연산자 표현식에서 연산자가 특정 타입이어야하는 경우
    • 표현식이 특정 타입으로 평가되어야 하는 경우
    • 함수에 파라미터에 지정된 타입과 다른 타입의 인자를 전달하는 경우

7.1.1 Conversion to Number

산술 연산

  • 산술 연산에서 두 피연산자는 number로 변환이 이루어진다.
"10" - 2;		// 8
"10" / "2";		// 5
"10" / 2;		// 5
"10" * 2;		// 20
"2" ** 2;		// 4
"10" % 3;		// 1
"10" + 2;		// 102
"10" + "2";		// 102

비교 연산

  • 일치, 비교 연산을 제외한 모든 비교 연산에서 두 피연산자는 number로 변환이 이루어진다.
'1' > 0;		// true
'a' > 'b';		// false

7.1.2 Conversion to String

문자열 연산자 참고

7.1.3 Conversion to Boolean

  • if문이나 for문과 같은 제어문과 삼항 조건 연산자의 조건식은 boolean 값으로 평가되어야 한다.
if (1) console.log('1');

Fasly값은 false로, Truthy값은 true로 변환된다.

  • 부정 논리 연산자 !을 두 번 사용하면 피연산자를 boolean 값으로 평가한 결과를 얻을 수 있다.
!![];		// true

Falsy

  • 자바스크립트 엔진은 boolean 타입이 아닌 값을 Truthy(참으로 평가되는 값)과 Falsy(거짓으로 평가되는 값)으로 구분한다.
  • Falsy가 아닌 값은 모두 Truthy이다.
  • 불리언 문맥에서 Truthy는 true로, Falsy는 false로 변환된다.
type value
boolean false
number 0, -0, NaN
bigint 0n
string "", '', ``
undefined undefined
null null
  • Falsy인지 Truthy인지 판별하는 isFalsyisTruthy를 작성해볼 수 있다.
const isFalsy = (val) => !val;
const isTruthy = (val) => !!val;

7.2 Explicit Conversion

  • 명시적 형변환(explicit coercion) 혹은 타입 캐스팅(type casting)은 프로그래머가 명시적으로 형변환하는 것을 의미한다.
  • 명시적 형변환을 하는 방법은 아래와 같다.
    • 빌트인 메서드 사용하기
    • 빌트인 생성자 함수를 new 연산자 없이 사용하기

7.2.1 Conversion to Number

메서드 파라미터 반환 설명
Number() 타입 제한 없음 number 파라미터를 숫자로 바꿀 수 없는 경우 NaN을, 그렇지 않다면 그 수를 반환한다.
parseInt(문자열, base) string number 문자열을 특정 진수를 사용한 정수로 반환한다.
변환할 수 없는 경우 NaN을 반환한다.
parseFloat(문자열) string number 문자열을 부동소수점 실수로 반환한다.
변환할 수 없는 경우 NaN을 반환한다.

Number()

Number()는 매개변수를 타입에 따라 다음과 같이 변환한다.

  • Falsy는 다음과 같이 변환된다.
Falsy converted to
undefined, NaN NaN
그 외 0
  • Truthy는 다음과 같이 변환된다.
분류 converted to
string number로 변환할 수 있는 경우 그 수를 반환한다.
number로 변환할 수 없는 경우 NaN을 반환한다.
배열 리터럴 요소가 없는 경우([]), 0을 반환한다.
요소가 하나이고, 해당 요소가 number로 변환가능하다면 그 수를 반환한다.
요소가 두 개 이상인 경우 NaN을 반환한다.
객체 리터럴 NaN
function NaN

7.2.2 Conversion to String

메서드 파라미터 반환 설명
String() 타입 제한 없음 string 파라미터를 문자열로 바꾸어 반환한다.
Object.prototype.toString() 타입 제한 없음 string 파라미터를 문자열로 바꾸어 반환한다.
  • 대개 리터럴에 그대로 ""가 씌어진 string이 반환된다.
  • 예외는 아래와 같다.
리터럴 converted to
배열 요소가 없다면([]), ""을 반환한다.
요소가 하나라면, 그 요소가 그대로 string으로 변환된다.
요소가 두 개 이상이면, 요소들이 ,로 연결된 string이 반환된다.
{} "[object Object]"
/* 리터럴이 그대로 반영된 경우 */
String(function(){});	// "function(){}"
String(true);	// "true"

/* 배열의 경우 */
String([10]);	// "10"
String(["10"]);	// "10"
String([10, 20]);	// "10,20"
String(["10", "20"]);	// "10,20"
String(["A", 10])

7.3 Conversion Object to Primitive Value

Conversion Object to Primitive Value 참고

참고