[ JavaScript ] 이터레이터 & for-of

2021. 2. 16. 01:11·Archive/Develop
목차
  1. 1. iterator & for-of
  2. 2. iterable
  3. 3. Symbol
  4. 3. for-of 내부 동작
728x90
반응형

기존의 다른 언어에서는 배열과 같은 자료구조 순환시 iterator 를 사용했었다.

 

 

자바스크립트에서는 흔히 for-in 을 사용했는데,

 

이는 객체의 속성만을 순환할 때 사용했었다.

 

 

 

ES6 에서는 다양한 순환을 제공하기 위해 새로운 종류의 루프 문법을 추가했다.

 

 

 

이것이 바로 iterator 와 for-of 키워드 이다.

 

 

 

1. iterator & for-of

 

 

const list = [1,2,3];

for(let data of list){
	console.log(data);
}

 

 

 

 

for of 구문을 앞서 보았던 배열 뿐 아니라 이터러블 객체라면 모두 사용 가능하다.

 

 

 

 

2. iterable

 

 

앞서 언급했던 이터러블 이란 무엇일까?

 

 

순회 가능한 이라는 뜻으로, 이터레이터 는 이터러블 객체를 의미한다.

 

 

 

이터러블 객체는 순회를 위해 Symbol.iterator 속성을 가지고 있다.

 

 

 

 

3. Symbol

 

 

 

Symbol 은 객체의 유니크한 속성을 만들기 위해 사용되는 타입이다.

 

 

 

let color = Symbol('red');
console.log(typeof color);

 

 

심볼은 위와 같은 코드로 생성한다.

 

 

 

 

 

 

typeof 의 결과로 symbol 이 출력되는 것을 확인할 수 있다.

 

 

 

typeof 가 반환하는 타입은 아래와 같다.

 

 

  • Undefined
  • Boolean
  • Number
  • String
  • Object
  • Function
  • Symbol

 

 

Obejct 와 Function 을 제외하면 모두 자바스크립트의 기본형이다.

 

 

참고로 기본형에는 null 도 존재하지만,

 

typeof null 은 object 로 출력된다.

 

 

 

심볼이 같는 의의이자 가장 큰 특징은 고유하다 라는 것이다.

 

 

 

const color = {
	color1:[Symbol('red')],
    color2:[Symbol('red')]
};

console.log(color.color1 == color.color2);

 

 

 

 

심볼은 고유하기 때문에 'red' 라는 같은 값을 가지고 있지만,

 

false 를 출력하는 것이다.

 

 

 

유의해야할 점은,

 

자바스크립트의 객체 루프인 for-in 이나 Object.keys 는 심볼을 건너 뛴다.

 

 

만약 출력하려고 한다면, 결과값을 볼 수 없을 것이다.

 

 

 

 

새로운 api 인 Object.getOwnPropertySymbols() 를 이용하면 객체 안에 존재하는

심볼키 목록을 볼 수 있다.

 

 

 

 

심볼 객체를 우리가 정의해서 사용할 수도 있지만,

 

자체적으로 있는 심볼이 있는데, 그 중 하나가 Symbol.iterator 이다.

 

 

만약 이 Symbol.iterator 속성을 가지고 있는 객체가 있다면,

 

그 객체는 iterable한 객체라고 할 수 있다.

 

 

iterable한 객체는 for-of 구문에 사용할 수 있다.

 

 

 

 

3. for-of 내부 동작

 

 

이터레이터 객체는 Symbol.iterator 메소드를 제공한다.

 

 

for-of 루프는 이 symbol.iterator 메소드를 호출하는 것부터 시작하고,

 

 

이 반환값으로 이터레이터 객체가 리턴된다.

 

 

 

이터레이터 객체는 next() 메소드와  value,done 을 속성으로 가지고 있다.

 

 

 

next() 메소드를 내부적으로 반복하면서, 객체들을 순회하는 것이다.

 

 

 

 

const num = new 
728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ CodeUp ] Python 기초 100제 | 6002 번 풀이  (0) 2021.03.08
[ CodeUp ] Python 기초 100제 | 6001 번 풀이  (0) 2021.03.08
[ JavaScript ] ES6 : 기본 매개변수  (0) 2021.02.15
[ JavaScript ] ES6 : IIFE(즉시 실행 함수)  (0) 2021.02.15
[ JavaScript ] ES6 : Arrow Function & this (화살표 함수)  (0) 2021.02.15
  1. 1. iterator & for-of
  2. 2. iterable
  3. 3. Symbol
  4. 3. for-of 내부 동작
'Archive/Develop' 카테고리의 다른 글
  • [ CodeUp ] Python 기초 100제 | 6002 번 풀이
  • [ CodeUp ] Python 기초 100제 | 6001 번 풀이
  • [ JavaScript ] ES6 : 기본 매개변수
  • [ JavaScript ] ES6 : IIFE(즉시 실행 함수)
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    파이썬 기초
    파이썬 백준
    자바스크립트
    오라클
    비박스
    파이썬
    자바스크립트 객체
    Python
    카카오 100일 프로젝트
    백준 문제풀이
    코드업 기초
    백준 풀이
    코드업 파이썬 기초 100제
    Oracle
    백준
    파이썬 문제
    docker
    Django
    oracle db
    Git
    코드업
    파이썬 기초 문제
    Codeup
    자바스크립트 API
    보안뉴스
    javascript
    C++
    파이썬 알고리즘
    백준 파이썬
    장고
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ JavaScript ] 이터레이터 & for-of
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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