본문 바로가기
Language/JavaScript

[JavaScript] 강제적 형변환(type coercion)

by 며루치꽃 2021. 1. 4.

형변환에는 명시적 형변환(type conversion)도 있지만, 강제적 형변환(type coercion)도 존재하게 됩니다.

명시적 형변환(type conversion)이란, 명시적으로 어떤 변수 형태를 바꿀지 결정하게 됩니다.

console.log('I am ' + String(25) + ' years old');

이 경우 25인 number가 String 으로 명시적 형변환을 하게 되어 문자열로 인식하게 됩니다.

강제적 형변환(type coercion) 도 존재하게 됩니다.

console.log('I am ' + 25 + ' years old');

+ 연산은 모든 것을 숫자로 바꾸는 것은 아니다.

이 경우 문자열(String) + 숫자 + 문자열(String)이 되기 때문에 

가운데 있는 숫자가 강제 형변환이 되어 문자열로 인식하게 되어 하나의 String으로 인식하게 됩니다.

console.log('I am ' + '25' + ' years old');

 

 

console.log('25' - '10' - 3);

위와 같은 예시는 - 연산자를 사용하고 있는데 이 경우, 숫자로 인식하여 결과는 number 형태인 12를 출력하게 됩니다.

 

console.log('25' + '10' + 3);

반대로 + 연산자를 사용할 경우, 다시 String 형태로 인식하게 되어 String 형태인 25103으로 출력하게 됩니다. 

let n = '1' + 1;
n = n - 1;
console.log(n);

마찬가지로 변수 n을 문자열과 + 연산자를 이용하면 뒤에 있는 1을 String으로 인식하게 되어 11이 되고 

11 - 1이라는 결과로 인해 10이 출력되게 됩니다. 

 

'10' - '4' - '3' - 2 + '5'

+ 연산자를 만나기 전까지는 number로 인식하게 되어 결과가 1이 되다가 + 연산자를 만나서 

String 형태인 15가 되게 됩니다. 

댓글