명시적 타입 변환 (타입 캐스팅)
암묵적 타입 변환 (타입 강제 변환)
1️⃣ 문자열
-0 + ''; // '0'
-1 + ''; // '-1'
({}) + ''; // '[object Object]'
[] + ''; // ''
2️⃣ 숫자
빈 문자열, 빈 배열, null, false -> 0
객체, 빈 배열이 아닌 배열, undefined -> NaN
+''; // 0
+'1'; // 1
+null; // 0
+undefined; //NaN
+{}; // NaN
+[]; // 0
+[10, 20]; // NaN
3️⃣ 불리언
자바스크립트는 불리언 타입이 아닌 값은 Truthy 값 or Falsy 값으로 구분한다.
Truthy 값은 true로, Falsy 값은 false로 암묵적 타입 변환된다.
false
undefined
null
0, -0
NaN
빈 문자열 ('')
1️⃣ 문자열
String(1);
NaN.toString();
1 + '';
2️⃣ 숫자
Number('0');
parseInt('0'); // 문자열만 변환 가능
parseFloat('10.53'); // 10.53
+'0';
'0' * 1;
3️⃣ 불리언
Boolean('x'); // true
Boolean(''); // false
Boolean(0); // false
!!''; // 부정 논리 연산자 두 번 사용
단축 평가란, 표현식을 평가하는 도중에 평가 결과가 확정되면 나머지 평가 과정을 생략하는 것이다.
1️⃣ 논리 연산자
논리합과 논리곱에 의한 연산은 2개의 피연산자 중에서 어느 한쪽으로 평가된다.
true || anything; // true
false || anything; // anything
true && anything; // anything
false && anything; // false
2️⃣ 옵셔널 체이닝 연산자 ?.
좌항의 피연산자가 null 또는 undefined 인 경우, undefined를 반환한다. 그렇지 않으면 우항의 프로퍼티 참조를 이어간다.
var elem = null;
var value = elem?.value;
console.log(value); // undefined
3️⃣ null 병합 연산자 ??
좌항의 피연산자가 null 또는 undefined 인 경우, 우항의 피연산자를 반환한다. 그렇지 않으면 좌항의 피연산자를 반환한다.
var str1 = null ?? 'default string';
console.log(str1); // dafault string
var str2 = '' ?? 'default string';
console.log(str2); // ''