new
연산자 없이 호출String(1); // '1'
String(NaN); // 'NaN'
String(true); // 'true'
(1).toString(); // '1'
(NaN).toString(); // 'NaN'
(true).toString(); // 'true'
1 + ''; // '1'
NaN + ''; // 'NaN'
true + ''; // 'true'
new
연산자 없이 호출Number('0'); // 0
Number('11.23'); // 11.23
Number(true); // 1
parseInt('0'); // 0
parseInt('11.23'); // 11
parseFloat('11.23'); // 11.23
+
단항 산술 연산자 이용 (암묵적 타입 변환)+'0'; // 0
+'11.23'; // 11.23
+true; // 1
*
산술 연산자 이용 (암묵적 타입 변환)'0' * 1; // 0
'11.23' * 1; // 11.23
true * 1; // 1
new
연산자 없이 호출Boolean('') // false
Boolean('0') // true
Boolean('false') // true
!
부정 논리 연산자를 두 번 사용!!'' // false
!!'0' // true
!!'false' // true
!!0 // false
표현식 평가 도중에 결과가 확정된 경우 나머지 평가 과정을 생략하는 것을 단축 평가(short-circuit evaluation)라고 합니다.
논리 연산자 &&
는 좌항이 false로 평가되는 Falsy 값(false
, undefined
, null
, 0
, -0
, NaN
, ''
)이면 좌항 피연산자를 타입 변환 없이 그대로 반환합니다.
논리 연산자 ||
는 좌항이 false로 평가되는 Falsy 값(false
, undefined
, null
, 0
, -0
, NaN
, ''
)이면 우항 피연산자를 타입 변환 없이 그대로 반환합니다.
true || 'hello' // true
false || 'hello' // 'hello'
true && 'hello' // 'hello'
false && 'hello' // false
ES11에서 도입된 옵셔널 체이닝(optional chaining) 연산자 ?.
는 좌항이 null
또는 undefined
인 경우에만 undefined
를 반환합니다.
var str = null;
var strLength = str && str.length; // 옵셔널 체이닝 연산자 도입 이전 방식
console.log(strLength) // null
var strLength = str?.length;
console.log(strLength) // undefined
var str = '';
var strLength = str?.length;
console.log(strLength) // 0
ES11에서 도입된 null 병합(nullish coalescing) 연산자 ??
는 좌항이 null
또는 undefined
인 경우에만 우항의 피연산자를 반환합니다. 그렇지 않은 경우에는 좌항의 피연산자를 반환합니다.
var defaultValue = null || 'default value'; // null 병합 연산자 도입 이전 방식
console.log(defaultValue); // 'default value'
var defaultValue = null ?? 'default value';
console.log(defaultValue); // 'default value'
var defaultValue = '' ?? 'default value';
console.log(defaultValue); // ''