본문 바로가기

ES6

[JS: ES6+] 비동기: 동시성 프로그래밍 (2) #1 지연 평가와 Promise 지연 평가 + Promise - L.map, map과 take 먼저, go 안에 Promise로 구성하여 출력해보자. go([Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)], L.map(a => a + 10), take(2), console.log); // ["[object Promise]10", "[object Promise]10"] go에 Promise로 구성하면, 정상적인 연산이 되지 않는다. 이를 정상적으로 연산이 되게끔 구성을 해볼 것 이다. 앞에서 사용했던 L.map 함수를 보자. L.map = curry(function* (f, iter) { for (const a of iter) { yield f(a.. 더보기
[JS: ES6+] 코드를 값으로 다루어 표현력 높이기 (go, pipe) #1 go, pipe 함수를 통해 표현력을 높이기 go, pipe 함수란 무엇인가? 코드를 값으로 다룬다면 전체적인 코드의 표현력을 높일 수 있는데, go, pipe를 구현해서 표현력을 높여보자. 먼저 다음과 같은 코드가 있다고 가정하자. a(b,c(d,e())); 위 코드는 함수가 연속해서 중첩되어 가독성이 떨어져서, 작성하기도 해석하기도 힘들다. 이를 간편하게 더 읽기 쉽게 코드를 짜기 위해서 위에서 언급한 go, pipe 함수를 활용해보자. 우선 go 함수를 보자. go 함수는 인자를 받아 결과를 바로 산출해내는 함수로, 첫번째 인자는 시작되는 값을 받고, 나머지는 함수를 받아 첫번째 인자가 두번째 함수로 가서 결과를 만들고 그 결과가 또 세번째 함수로 가서 결과가 만들어지는 순으로 진행된다. 이러.. 더보기
[JS: ES6+] 이터러블 프로토콜을 따른 map, filter, reduce #1 map 이터러블 프로토콜을 따른 map 간단하게 먼저, map 함수는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다. var array1 = [1, 4, 9, 16]; // pass a function to map const map1 = array1.map(x => x * 2); console.log(map1); // expected output: Array [2, 8, 18, 32] 이제, 이터러블 프로토콜을 따른 map함수를 알아볼건데요, 먼저 map을 사용하지 않은 예제를 봅시다. const products = [ { name: '반팔티', price: 15000 }, { name: '긴팔티', price: 20000 }, { name: '후드티.. 더보기
[JS: ES6+] ES6에서의 순회와 이터러블:이터레이터 프로토콜 #1 기존과 달라진 ES6에서의 리스트 순회 ( for of, for i++) //기존 리스트 순회 const list = [1, 2, 3]; for (var i = 0; i< list.length; i++) { console.log(list[i]); // 1 2 3 } //기존 문자배열 순회 const str = 'abc'; for (var i = 0; i< str.length; i++){ console.log(str[i]); // a b c } //바뀐 리스트 순회 for (const a of list) { console.log(a); // 1 2 3 } //바뀐 문자배열 순회 for (const a of str) { console.log(a); // a b c } #2 Array, Set, Map을.. 더보기