이 영역을 누르면 첫 페이지로 이동
Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

페이지 맨 위로 올라가기

모던 JavaScript 튜토리얼 파트 1 :: 5장 "자료구조와 자료형" 정리

Coding Groot

모던 JavaScript 튜토리얼 파트 1 :: 5장 "자료구조와 자료형" 정리

  • 2023.01.09 22:30
  • Programming Language/JavaScript
글 작성자: Coding Groot

모던 JavaScript 튜토리얼 5장을 읽으면서 정리하는 글입니다. 

5장 자료구조와 자료형

1. 원시값의 메서드

 

원시값의 메서드

 

ko.javascript.info

원시값과 객체는 다릅니다.

원시값은 Property가 없습니다. 하지만 편하게 객체처럼 속성을 호출할 수 있습니다.

속성이 필요한 경우 원시값이 Wrapper를 통해 일시적으로 객체로 변하기 때문입니다.
잠시 메서드를 제공하기 위해 만들어진 원시 래퍼 객체(object wrapper)는 일시적입니다. 

이를 Auto Boxing이라고 부릅니다.

객체는 여러 속성을 정의할 수 있습니다.

자바스크립트에서는 함수도 객체입니다.

// 원시 객체를 직접 만드는 법
if (new Number(0)) { // 객체이므로, true
console.log("zero!")
}
// new가 없으면 원시값으로 반환된다
if (Number("0")) { // 원시형인 숫자 0
console.log("zero!")
}

null/undefined는 메서드가 없으므로 원시 객체도 없습니다.

2. 숫자형

 

숫자형

 

ko.javascript.info

모던 자바스크립트는 두 가지 숫자형을 지원합니다.

  1. 일반적인 숫자
    • 배정밀도 부동소수점 숫자(double precision floating point number)
    • 64비트 형식의 IEEE-754
  2. BigInt
    • json은 bigint를 지원하지 않으니 주의해야 합니다.

Base는 toString함수를 이용해서 편하게 바꿔서 볼 수 있습니다.

let num = 3;
console.log(num.toString(2)); // 11

Math.floor, Math.ceil, Math.trunc, Math.round, num.toFixed(precision) 함수로 어림 소수를 구할 수 있습니다.

숫자만 추출하기 위해 나온 방법 parseInt, parseFloat

console.log(+" 100 "); // 100
console.log(+"100px"); // NaN
console.log(parseInt('100px')); // 100
console.log(parseInt('a100')); // NaN

보통 뒤에 부호가 많이 붙는데 이 함수를 이용하면 편하게 약한 형변환을 할 수 있습니다.

3. 문자열

 

문자열

 

ko.javascript.info

문자열도 순회 가능!

부분 문자열을 얻으려면 slice나 substring을 사용합니다. (substring은 start가 end보다 커도 됩니다)

사용 빈도가 낮은 기호는 surrogate pair(2바이트 글자들의 쌍)을 사용해 인코딩합니다.

4. 배열

 

배열

 

ko.javascript.info

익숙한 내용이라서 skip

다만 이 책에서는 new Array는 지양하라고 합니다.

new Array(number)을 호출하면 길이가 number인 배열이 만들어지는데 알고리즘 문제를 풀 때 사용하면 편합니다!

5. 배열과 메서드

 

배열과 메서드

 

ko.javascript.info

이 부분도 파이썬을 쓰며 익숙한 부분이라서 대부분 skip합니다.

고차함수에 this를 넘겨줄 수 있습니다. 

const ageHelper = {
isEven(n) {
return n%2 == 0;
},
isEvenAge(user) {
return this.isEven(user.age);
}
};
const users = [
{age: 16},
{age: 20},
{age: 23},
{age: 30}
];
const evenList = users.filter(ageHelper.isEvenAge, ageHelper);
console.log(evenList);

6. iterable 객체

 

iterable 객체

 

ko.javascript.info

반복 가능한(iterable, 이터러블) 객체는 배열을 일반화한 객체입니다. 

어떤 객체를 이터러블로 만드려면 객체에 Symbol.iterator(특수 내장 심볼)라는 메서드를 추가해서 인터페이스를 만족시켜야 합니다.

for ... of가 제일 처음 시작될 때 Symbol.iterator를 호출하게 됩니다. 이때 Symbol.iterator는 반드시 이터레이터(iterator, 메서드 next가 있는 객체) 를 반환해야 합니다.

그리고 반환된 객체(이터레이터)만을 대상으로 순회합니다.

다음 값이 필요하면, for..of는 이터레이터의 next()메서드를 호출합니다.

next()의 반환 값은 {done: Boolean, value: any}와 같은 형태여야 하는데 done=true면 반복을 종료하고 done=false면 value에 다음 값이 저장됩니다.

책에서는 이런 이터레이터 패턴을 쓰는 것을 관심사의 분리(Separation of concern, SoC) 때문이라고 합니다. 

그리고 하스켈처럼 무한개의 이터레이터를 만들 수도 있습니다.
https://www.futurelearn.com/info/courses/functional-programming-haskell/0/steps/27237

7. 맵과 셋

 

맵과 셋

 

ko.javascript.info

어떤 분류에 따른 session id를 만들 때 써보았습니다.

8. 위크맵과 위크셋

 

위크맵과 위크셋

 

ko.javascript.info

skip

9. Object.keys, values, entries

 

Object.keys, values, entries

 

ko.javascript.info

skip

10. 구조 분해 할당

 

구조 분해 할당

 

ko.javascript.info

skip

11. Date 객체와 날짜

 

Date 객체와 날짜

 

ko.javascript.info

문자열로 뽑아낼 때의 형식

YYYY-MM-DDTHH:mm:ss.sssZ

12. JSON과 메서드

 

JSON과 메서드

 

ko.javascript.info

순환참조를 조심해야 합니다.

출처

  • https://www.flaticon.com/free-icons/coding
반응형

댓글

댓글을 사용할 수 없습니다.

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [JS] Lexical Environment로 알아보는 Closure

    [JS] Lexical Environment로 알아보는 Closure

    2023.01.16
  • 모던 JavaScript 튜토리얼 파트 1 :: 6장 "함수 심화학습" 정리

    모던 JavaScript 튜토리얼 파트 1 :: 6장 "함수 심화학습" 정리

    2023.01.16
  • 모던 JavaScript 튜토리얼 파트 1 :: 3장 "코드 품질", 4장 "객체:기본" 정리

    모던 JavaScript 튜토리얼 파트 1 :: 3장 "코드 품질", 4장 "객체:기본" 정리

    2023.01.02
  • 모던 JavaScript 튜토리얼 파트 1 :: 1장, 2장 정리

    모던 JavaScript 튜토리얼 파트 1 :: 1장, 2장 정리

    2022.12.26
다른 글 더 둘러보기

정보

Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

  • Coding Groot의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록
  • 소개
  • 블로그 저작권

카테고리

  • 분류 전체보기 (182)
    • Git (23)
      • Git Tutorial (9)
      • Git Note (7)
      • Git Lecture (7)
    • Programming Language (1)
      • C (2)
      • C Sharp (5)
      • Java (4)
      • JavaScript (7)
      • Julia (5)
      • Python (4)
    • Programming (8)
      • Algorithm (2)
      • Compiler (5)
      • Data Structure (0)
      • Web (12)
      • NestJS (2)
    • DevOps, Infra (36)
      • Apple (6)
      • Cloud (15)
      • Database (1)
      • Network (4)
      • Linux (8)
    • Game Programming (11)
      • Unity Tutorial (5)
      • Unity Note (6)
    • Hardware Design (1)
      • Digital Circuit (1)
    • Note (49)
      • Coffee (2)
      • Retrospect (15)
      • Reading List (14)
    • Mathematics (1)

인기 글

공지사항

태그

  • tutorial
  • 한빛미디어
  • 서평
  • aws
  • 회고
  • Github
  • git
  • javascript
  • 전체 보기…

정보

Coding Groot의 Coding Groot

Coding Groot

Coding Groot

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기

나의 외부 링크

  • GitHub
  • SlideShare
  • 유니티 2020 수업
  • TIL Blog
  • 모도코

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. Copyright © Coding Groot.

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.