자바스크립트에서의 타입 변환과 단축 평가

Javascript

암묵적 타입 변환

개발자의 의도와 상관없이 코드의 문맥을 고려해서 자바스크립트 엔진에 의해 암묵적으로 타입이 변경된다.

문자열 타입으로 변환
1+'2' //'12'

피연산자가 하나라도 문자열이 있다면 + 연산자는 문자열을 연결 연산자로 사용하게 된다. 그러므로 저 예제의 경우 문맥상 모두 문자열 타입으로 타입이 변환되어 ‘12’의 문자열 결과값을 나타낸다.

숫자 타입으로 변환
1-'2' //-1
1*'10' //10
1/'one' //NaN

산술 연산자의 피연산자는 모두 숫자 타입으로 변경된다. 만약 산술 연산을 진행할 수 없다면 NaN이 된다.

+단항 연산자는 피연산자가 숫자가 아니면 숫자로 암묵적으로 변환한다.

불리언 타입으로 변환

위의 5가지를 제외한 나머지는 true의 의미로 암묵적으로 변환된다.

명시적 타입 변환

개발자의 의도에 따라 명시적으로 타입을 변경한다.

문자열 타입으로 변환
  1. String 생성자 이용
  2. toString 메서드 사용
  3. 문자열 연결 연산자 사용
숫자 타입으로 변환
  1. Number 생성자 이용
  2. parseInt, parseFloat 사용
  3. +단항 산술 연산자 사용
  4. *산술 연산자 사용
불리언 타입으로 변환
  1. Boolean 생성자 이용
  2. !! 사용

옵셔널 체이닝 연산자

ES11에서 도입된 옵셔널 체이닝 연산자 ?.좌항의 피연산자가 NULL 또는 undefined인 경우 undefined를 반환하고 그렇지 않으면 우항의 프로퍼티 참조를 이어간다.

var elem = null;

var value = elem?.value;
console.log(value); // undefined

이는 객체를 가리키는 변수가 null 또는 undefined인지 확인하고 프로퍼티를 참조할 때 유용하다. 즉 단축평가에서 사용된 이 문장과 똑같다.

var elem = null;

var value = elem && elem.value;
console.log(value); // undefined

null 병합 연산자

ES11에서 도입된 null 병합 연산자 ??는 좌항의 피연산자가 null 또는 undefined인 경우 우항의 피연산자를 반환하고, 그렇지 않으면 좌항의 피연산자를 반환한다. 변수에 기본값을 설정할 때 유용

var foo = null ? 'default string';
console.log(foo); // 'default string'