자바스크립트는 타입 converison이 된다.
예를 들어
const birthYear = 1998;
const name = 'Bo Hyeon '
console.log(name+birthYear)
위의 코드가 출력하는 것은 무엇일까?
바로 Number타입은 birthYear을 String타입으로 바꾼 문자열 'Bo Hyeon 1998'이 출력된다.
String Data 값의 conversion은 String 값과 +연자를 사용하면 되지만 다른 data type으로 conversion하려면 어떻게 해야할까?
바로 primitive type의 생성자에 파라미터로 넘기면 된다
const year = '2021' // String type
console.log(typeof Number(year)); // Number 출력
위처럼 Number생성자에 넘기고 typeof를 찍어보면 Number가 출력될 것이다.
이 때 conversion이 안되는 값을 파라미터로 넘기면 어떻게 될까?
const name = 'Bo Hyeon';
console.log(typeof Number(name)); // NaN
위와 같은 경우는 NaN, 즉 Not a Number가 출력될 것이다.
즉 String 데이터를 Number데이터로 Conversion 할 수 없다는 것이다.
Type Coercion (강제)
자바스크립트에서 서로 자료형이 다른 value끼리 연산을 시키면 어떻게 될까?
이때는 자바스크립트가 이면에서 type coercion을 한다.
위에서
const birthYear = 1998;
const name = 'Bo Hyeon '
console.log(name+birthYear)
도 정확히 말하면 자바스크립트가 이면에서 birthYear을 Number에서 String으로 type coercion, 즉 강제 한 것이다.