
자바스크립트에서 데이터 타입을 다룰 때 type conversion과 type coercion이라는 두 가지 개념이 있습니다. 이 두 용어는 비슷하게 들리지만, 서로 다른 의미를 가집니다.
정의: 명시적으로 데이터 타입을 변환하는 과정입니다. 프로그래머가 의도적으로 변환을 수행합니다.
예시:
String() 함수를 사용하여 숫자를 문자열로 변환:
const num = 123;
const str = String(num); // '123'
console.log(typeof str); // 'string'
Number() 함수를 사용하여 문자열을 숫자로 변환:
const strNum = "456";
const numConverted = Number(strNum); // 456
console.log(typeof numConverted); // 'number'
정의: 자바스크립트 엔진이 자동으로 데이터 타입을 변환하는 과정입니다. 프로그래머가 의도하지 않더라도 발생할 수 있습니다.
예시:
문자열과 숫자를 더할 때, 숫자가 문자열로 변환됩니다:
const result = 5 + "5"; // '55'
console.log(result); // '55'
비교 연산에서 타입이 자동으로 변환됩니다:
console.log(5 == "5"); // true
// '5'가 숫자 5로 변환되어 비교됩니다.
Type Conversion: 프로그래머가 명시적으로 타입을 변환하는 것입니다.
Type Coercion: 자바스크립트가 자동으로 타입을 변환하는 것입니다.
이 두 개념을 이해하는 것은 자바스크립트에서 데이터 타입을 효과적으로 다루는 데 중요합니다.
Type Coercion은 자바스크립트에서 자동으로 데이터 타입을 변환하는 과정으로, 때때로 예기치 않은 결과를 초래할 수 있습니다.
이러한 자동 변환은 코드의 가독성을 떨어뜨리고, 버그를 양산할 수 있는 원인이 됩니다. 따라서 Type Coercion을 이해하는 것이 중요합니다.
비교 연산에서의 문제:
== 연산자는 타입을 강제로 변환하여 비교합니다. 이로 인해 의도하지 않은 결과가 발생할 수 있습니다.console.log(0 == "0"); // true
console.log(false == ""); // true
console.log(null == undefined); // true
이러한 결과는 코드의 의도를 명확히 이해하지 못하게 만들 수 있습니다.
문자열과 숫자의 결합:
const a = 5;
const b = "10";
const result = a + b; // '510'
console.log(result); // '510'
이 경우, 숫자 5가 문자열로 변환되어 문자열 결합이 이루어집니다.
Type Coercion은 자바스크립트의 유연성을 제공하지만, 동시에 버그를 양산할 수 있는 잠재적인 원인이 됩니다.
따라서, === (엄격한 동등 비교 연산자)를 사용하여 타입 변환을 피하고, 명시적인 타입 변환을 통해 코드를 작성하는 것이 좋습니다.
이를 통해 코드의 가독성을 높이고, 예기치 않은 동작을 방지할 수 있습니다.