본문 바로가기

카테고리 없음

데이터 타입 변환

 

 

암시적 형 변환

의도하지 않았지만 자동으로 변환되는 상황. 산술 연산자에 의해 발생한다.

자동 형 변환이라고 하기도 하고 직역하면 타입 강제 변환(Type Coercion) 이다

예시)

let result = 1 + '2';

console.log(result); // 12 

console.log(typeof result);// string

number인 1과 string인 2을 더했는데 string인 12가 되었다.

 

JS에서 +연산자는 number의 덧셈 연산을 수행할 수도 있지만, 문자열을 결합하는 역할도 있다.

다른 타입의 값을 string과 결합할 경우, string으로 타입이 변환된 후 두 문자열이 결합된다.

 

 

다른 산술연산자( -, *, /, % )의 경우에는 반대로 문자열이 숫자로 변환된 후 연산이 수행된다.

console.log('5' - 2); // 3 (문자열 '5'가 숫자 5로 변환됨)
console.log('5' * 2); // 10
console.log('10' / '2'); // 5
console.log('10' % 3); // 1

 

그 이유는 아마 문자열을 결합하는 + 의 역할과 달리

다른 산술 연산자들은 숫자 계산만을 위한 연산자들이기 때문이 아닐까 싶다

 

그렇기에 숫자로 이루어진 문자열이 아니면 당연히 NaN이 뜬다(불리언은 0, 1로 바뀌긴함)

 

 

추가) 객체형 데이터에 + 연산자가 사용했을경우

let obj = { key: "value" };
console.log(obj + '2'); // "[object Object]2"

let arr = [1, 2, 3];
console.log(arr + '4'); // "1,2,34"

 

 

 

 

명시적 형 변환

개발자가 의도하여 데이터 타입이 변환시키는 케이스.

각 데이터 타입으로 변환하는 함수가 있다

 

Boolean()

//false
console.log(Boolean(0));
console.log(Boolean(""));
console.log(Boolean(null));
console.log(Boolean(undefined));
console.log(Boolean(NaN));

//true
console.log(Boolean("false"));
console.log(Boolean({}));
console.log(Boolean([]));

 

String()

let num = 123;
let str = String(num); // "123"

 

Number()

let str = "456";
let num = Number(str); // 456

 

 

parseInt() 문자열을 정수로

parseFloat() 부동소수점 숫자로

let intVal = parseInt("123.45"); // 123
let floatVal = parseFloat("123.45"); // 123.45