Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- MUI
- kakao map api
- 코드스테이츠
- 정규표현식
- 프론트엔드
- 배열
- OSI 7계층
- next/Image
- 재귀함수
- 이벤트 루프
- primitive type
- react js
- javascript
- 자료구조
- 코딩테스트
- 코드스테이츠 메인프로젝트
- nodejs
- 백준 nodeJS
- input class
- 백준
- 알고리즘
- CSS
- 페이지네이션
- Native select
- JavaScript Deep Dive
- 자바스크립트
- sort
- 유데미
- 버블정렬
- Node js
Archives
- Today
- Total
신입 개발자에서 시니어 개발자가 되기까지
[Javascript Deep Dive]9장 타입변환과 단축평가 본문
Javascript Deep Dive를 다 읽고 미리 필기해둔 것들을 코드스테이츠 내용과 합쳐서 올리다보니 해당 게시판은 텅텅 비어있다. 중복되는 내용을 올리기는 싫어서 골라서 올리려고 하다보니 계속 미루기만 했다.
1. 암묵적 타입의 변환
a. 문자열타입으로 변환
- Number + string = string
- 표현식의 피연산자가 아닌, 표현식의 평가 결과가 문자열 타입으로 변환 되는 경우도 있음.(템플릿 리터럴을 삽입했을 때)
b. 숫자타입으로 변환
i. 산술연산자
- -, *, / 의 경우.
ii. 비교연산자
- '1' > 0 의 경우 '1'을 숫자타입으로 변환.
iii. +단항연산자
주의 : 빈 객체는 NaN, 빈 배열은 0이다. Undefined는 nan이다. 배열안에 숫자가 있어도 nan이다.
c. 불리언 타입으로 변환
- false, undefined, null, 0, -0, NaN, ''(빈 문자열)은 false로 평가된다.
- 주의 : '0'은 true를 반환한다. 빈 문자열이 아니니까.
2. 명시적 타입 변환
a. 문자열타입으로 변환
- String 생성자 함수를 new 연산자 없이 호출
- Object.prototype.toString()
- 문자열 연결 연산자 이용
b. 숫자타입으로 변환
- Number 생성자 함수를 new 연산자 없이 호출
- parseInt, parseFloat 함수
- '+' 단항 연산자
- '*' 산술 연산자
c. 불리언 타입으로 변환
- Boolean 생성자 함수를 new 연산자 없이 호출
- ! 부정 논리 연산자를 두 번 사용
- 주의 : !!'false'는 true다. 빈 문자열이 아니니까. Infinity도 true임. 빈객체, 빈배열도 true다.
3. 단축평가
a. 논리연산자를 이용한 단축평가
- 단축평가를 이용하여 에러를 방지할 수 있는 경우 : 객체의 프로퍼티에 접근할 때
ex) 변수 object = null 일 때, object.value를 참조하면 에러가 나지만, object && object.value로 참조하면 에러가 나지 않음
b. 옵셔널 체이닝 연산자(?.와 &&의 차이)
- 논리연산자 &&의 경우 빈문자열 ''의 length를 반환하지 못한다.
- ?.의 경우에는 반환할 수 있음. 옵셔널 체이닝은 좌항 피연산자가 false로 평가되는 Falsy 값이라도 null 또는 undefined가 아니면 우항의 프로퍼티 참조를 이어간다.
c. Null 병합 연산자
- 마찬가지로 || 와 ??의 기능에도 차이가 있다. 목적은 어쩄든 변수가 null 또는 undefined일 경우에 반환해줄 default값을 설정해주는 것이다.
- 기본값으로 0이나 ''를 설정하려는 경우에는 ??연산자를 사용하여야한다.
'책읽기 > Javascript Deep Dive' 카테고리의 다른 글
[Javascript Deep Dive] 15장 let, const (0) | 2022.10.03 |
---|---|
[Javascript Deep Dive] 24장 클로저 (1) | 2022.10.03 |
[Javascript Deep Dive] 13장 스코프 (0) | 2022.10.03 |
[Javascript Deep Dive] 10장 객체 리터럴 (0) | 2022.10.03 |
31장 정규표현식 (0) | 2022.09.14 |