모던자바스크립트 9장 타입변환과 단축평가

연호·2022년 12월 16일
0

모던자바스크립트

목록 보기
4/28

타입 변환과 단축 평가

  1. 자바스크립트의 모든 값은 타입이있다. 개발자가 의도적으로 타입을 변환하는 것을 명시적 타입 변환, 타입 캐스팅이라 하며 의도와 상관 없이 표현식 평가 도중 변환되는 것을 암묵적 타입 변환, 타입 강제 변환이라 한다.

  2. 암묵적 타입 변환 예시

1 + '2'        // "12"  문자열 타입으로 변환
0 + ' '        // "0"	 문자열 타입으로 변환
true + ' '     // "true"
false + ' '    // "false"

1 - '1'        // 0
1 * '10'       // 10
1 / 'one'      // Mam
+''            // 0
+'1'           // 1
+true          // 1

if ('str') {}  // 문자열은 암묵적으로 true, 불리언 값으로 타입변환
  1. 명시적으로 문자열 타입 변환에는 아래 세가지가 있다.
    3-1 String 생성자 함수를 new 연산자 없이 호출
    3-2 Object.prototype.toString 메서드를 사용
    3-3 문자열 연결 연산자 사용
// 3-1
String(1); // "1"
String(NaN); // "NaN
String(true);// "true"

// 3-2
(1).toString(); // "1"
(NaN).toString(); // "NaN"
(true).toString(); // "true"

// 3-3
1 + ''; "1"
true + ''; "true'
  1. 숫자 타입으로 변환
    4-1 Number 생성자 함수를 new 연산자 없이 호출
    4-2 parseInt, parseFloat 함수를 사용 (문자열만 숫자타입으로 변환 가능)
    4-3 +단항 산술 연산자를 이용
    4-4 * 산술 연산자 이용
// 4-1
Number('-1'); // -1
Number('10.53'); // 10.53
Number('true'); // 1

// 4-2
parseInt('-1'); // -1
parseFloat('10.53'); // 10.53

// 4-3
+'-1' // -1
+'10.53' // 10.53

// 4-4
'0' * 1; // 0
'10.53' * 1; // 10.53
  1. 불리언 타입으로 변환
    5-1 Boolean 생성자 함수를 new 연산자 없이 호출하는 방법
    5-2 !부정 논리 연산자를 두번 사용하는 방법
// 5-1
Boolean('x'); // true
Boolean(''); // false
Boolean({ }); //true
Boolean([ ]); // true

// 5-2
!!'x'; // true
!!'';  // true
!!{ }; // true
!![ ]; // true
  1. && 연산자는 두 개의 피연산자가 모두 true로 평가될 때 true로 반환. 첫번 째 피연산자의 true 여부와 관계없이
    두번째 피연산자의 평가 결과를 결정. || 연산자의 경우 두개 중 하나만 true로 평가되어도 true를 반환하기에, 첫번 째 피연산자가 true라면 첫번 째 피연산자를, 두 번째 피연산자가 true라면 두 번 째 피연산자를 반환한다.
'cat' && 'dog' // 'dog'
'cat' || 'dog' // 'cat'
  1. 옵셔널 체이닝 연산자 ?. 는 좌항의 피연산자가 null 혹은 undefined 인 경우 undefined 를 반환, 그렇지 않은 경우 우항의 프로퍼티 참조.
var elem = null;
var value = elem?.value;
console.log(value); //undefined
  1. null 병합 연산자 ??는 좌항의 피연산자가 null 또는 undefined 인 경우 우항의 피연산자를 반환, 그렇지 않으면 좌항의 피연산자를 반환.
var foo = null ?? "default string";
console.log(foo); //"default string"
profile
뉴비

0개의 댓글