참고: 이웅모 《모던 자바스크립트 Deep Dive》 9장 · MDN Type coercion · MDN Nullish coalescing
== 한 번에 타입이 바뀌고, ||로 기본값을 넣다 0이 사라졌다.
타입 변환은 암묵(엔진이) 과 명시(내가) 로 나눈다. 단축 평가·옵셔널·null 병합은 “값 없을 때” 실무 도구다.
flowchart TB
V[값] --> IMP[암묵 변환]
V --> EXP[명시 변환]
IMP --> STR[문자열 문맥]
IMP --> NUM[숫자 문맥]
IMP --> BOOL[불리언 문맥]
SHORT[단축 평가 || &&] --> BOOL
NULLISH[??] --> NULLISH2[null/undefined만]
기존 값을 다른 타입의 값으로 만드는 것. 원본 변수를 바꾸기보다 연산 과정에서 임시 값이 생기는 그림이 많다.
+에 문자열이 있으면 연결 쪽으로 기울기 쉽다.
console.log(1 + '2'); // '12'
console.log('1' + 2 + 3); // '123'
산술·비교 등.
console.log(1 - '2'); // -1
console.log('6' * '2'); // 12
console.log(+'10'); // 10
if, &&, ||, ! — Truthy/Falsy.
Falsy: false, 0, -0, 0n, '', null, undefined, NaN.
if ('') console.log('no');
if ([]) console.log('yes array'); // 빈 배열 truthy
String(1);
(1).toString();
Number('1');
parseInt('1px', 10);
Boolean(1);
!!value;
의도를 드러낼 때는 명시를 선호.