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
- 자연어처리
- es6
- 객체
- callbackhell
- 챗봇
- developers
- 변수
- vuejs
- 순수함수
- 함수
- 오픈빌더
- Promise
- 유사배열객체
- ReactNative
- 플러스친구
- 배열
- 자바스크립트
- 카카오
- await
- callback
- 콜백함수
- expo
- JavaScript
- 오픈채팅
- async
- trim
- closure
- es7
- arguments
- 카카오톡채널
Archives
- Today
- Total
말랑말랑 LAB
[JavaScript] 이터레이터와 제너레이터 본문
자바스크립트 이터레이터와 제너레이터 (ECMAScript 6)
o 이터레이션(iteration)
- 반복 처리라는 뜻
- 데이터 안의 요소를 연속적으로 꺼내는 행위
o 이터레이터(iterator)
- 반복 처리(iteration)가 가능한 객체
- 배열의 Symbol.iterator 메서드는 이터레이터를 반환한다
- 배열 예제
- iter.next()를 호출할 때마다 iterator result 객체가 반환되는데, 이는 value와 done 프로퍼티를 갖는 객체이다.
- value 프로퍼티에는 차례대로 꺼내진 배열 요소의 값이 저장되고,
done 프로퍼티는 iteration이 끝났는지를 뜻하는 논리값이 저장된다
## 아래는 배열의 이터레이터를 반환하는 함수인데, 빨간색 괄호 부분을 한 줄 코드로 간단히 바꿔보자 !!
o 반복 가능한 객체와 for/of문
이터레이터를 사용해서 이터레이션(반복)을 하려면 개발자가 적절한 처리를 직접 작성해야 함
예제 - 배열의 요소를 이터레이터를 사용해서 객체 형태가 아닌 목록으로 바꾸고 싶다면?
for/of문을 사용하면 위의 반복 처리를 자동으로 할 수 있다 !
for/of 문으로 반복 처리할 수 있는 객체
Symbol.iterator 메서드를 가지고 있어야 함
즉, 반복 가능(iterable)한 객체
Array, String, TypedArray, Map, Set
o 제너레이터
함수 블록을 한 번에 실행하지 않고, 실행을 일시 중지했다가 필요한 시점에 다시 시작할 수 있는 함수
순회 가능한(iterable)한 값을 생성하는(gererate) 함수
- 함수를 호출하면 함수 블록이 실행되지만, 제너레이터는 제너레이터 객체를 반환한다.
- 이 제너레이터 객체는 순회 가능한(iterable) 값이다.
o 제너레이터 함수의 생성 규칙
- function* 키워드로 선언한다.
- 하나 이상의 yield 구문을 포함한다.
o 제너레이터의 동작
next 메소드가 호출되면 함수의 첫 번째 yield 연산자 위치까지 실행한 후, 일시 정지 상태가 된다.
또 next 메소드가 호출되면 일시 정지된 코드를 다시 실행하다가 yield를 만나면 또 다시 실행을 일시 중지한다.
## 아래 예제에서 next() 함수를 3번 호출할 때 결과값을 예상해보자 !! (console문자열, iterator result)
제너레이터 객체의 next 메소드는 인자를 받을 수도 있다.
## 아래 4개의 console.log 결과값도 예상해보자 !!
'JavaScript > JavaScript 스터디' 카테고리의 다른 글
[JavaScript] 정규 표현식 (0) | 2019.01.16 |
---|---|
[JavaScript] 화살표 함수 (0) | 2019.01.06 |
[JavaScript] 고차 함수 (0) | 2019.01.05 |
[JavaScript] 클로저 (0) | 2019.01.05 |
[JavaScript] 함수의 정의 (0) | 2019.01.05 |
Comments