강제 변환 (Type Coersion)

값 변환

추상 연산

어떻게 값이 문자열, 숫자, 불리언 등의 타입이 되는지 그 기본 규칙!!

ToString

JSON.stringify()

ToNumber

ToBoolean

Falsy 객체

명시적 강제변환

날짜 -> 숫자

틸드(~)

* -> boolean

암시적 변환

부수 효과가 명확하지 않게 숨겨진 형태로 일어나는 타입변환

암시적 강제변환의 목적은 중요한 내용으로부터 주의를 분산시켜 코드를 잡동사니로 가득 채워버리는 장황함, 보일러플레이트, 불필요한 상세 구현을 줄이는 것이다.

b; // “42”

- 위의 코드는 명시적 강제변환 String(a)에 비해 유의할 점이 있다.
  - `a + ""`는 a 값을 ToPrimitive 추상 연산과정에서 `valueOf()` 메서드에 전달하여 호출하고, 그 결과값은 ToString 추상 연산을 하여 최종적인 문자열로 변환한다.
  - `String()`메서드는 `toString()`을 직접 호출하는 것일 뿌닝다.
  ```javascript
  var a = {
    valueOf: function() { return 42; },
    toString: function() { reutrn 4; }
  };

  a + "";     // "42"
  String(a);  // "4"

비교!!!

null -> undefined