함수형 프로그래밍과 JavaScript ES6+

함수형 프로그래밍과 JavaScript ES6+

(52개의 수강평)

1282명의 수강생
Front-EndJavascript함수형 프로그래밍
꽃갈피 프로필

제너레이터와 관련된 질문입니다. 꽃갈피 20일 전
안녕하세요 :) 공부를 하던 와중에 제너레이터 * 위치에 관련하여 궁금한 점이 생겨서 질문을 드립니다. 강좌에서는 function *gen( ) { ... } 으로 함수 이름 앞에 *를 붙이셨는데 공식문서에서는 function* gen( ) { ... } 으로 function 뒤에 * 를 붙여서 표현했더라구요. 코드 실행은 둘 다 잘 되지만 *(별표) 위치가 함수 이름 앞에 붙이든, function 뒤에 붙이든 상관이 없는 것인지 궁금하여 질문을 남깁니다.

1
devsn 프로필

안녕하세요 변수 설정 관련 질문드립니다 devsn 1달 전
안녕하세요 map filter reduce 강의 를 듣는 중에 궁금한 점이 생겨 질문드립니다 let test =  ...filter( (p) => p.price < 20000, products) ) 이렇게는 값 할당이 불가능한가요? 그냥 log안에 test의 값을 넣어주면 콘솔에는 잘 찍힙니다.  변수에 담아서 활용해 보고 싶었는데, 담기지가 않네요 이에 대한 설명을 들을 수 있을까요?

2
성현제 프로필

사용자정의 이터러블 질문입니다! 성현제 1달 전
const iterable = { [Symbol.iterator]() { let i = 3; return { next() { return i == 0 ? {done: true} : {value: i--, done: false}; }, [Symbol.iterator]() { return this; } } } }; 이터레이터 안에서 this로 반환하는 이유가뭘까요! 없어도 상태참고가 잘됩니다!

1
oct_sky_out 프로필

product가 사라지는 이유는 이건가요? oct_sky_out 1달 전
const go = (...args) => reduce((a, f) => f(a), args);  go(         product,         filter(p => p.price >= 20000),         map(p => p.price),        reduce(add),         console.log    ); 모든함수에 curry를 적용하고 나서 go 함수안에 reduce의 영향때문에 굳이 모두 product나 price를 사용하지 않아도 되는지 궁금합니다.

3
dls9625 프로필

reduce 효울성 차이 질문 dls9625 1달 전
강의에서 본것처럼 const reduce2 = (f,acc,iter) => {              if(!iter){         iter = acc[Symbol.iterator]();         acc = iter.next().value;       }       for(const a of iter){         acc = f(acc,a);       }       return acc    } 아래와 같이 이용해서 test('range',10,() => reduce2(add,range(10000000))); test('Lrange',10,() => reduce2(add,L.range(10000000))); 이 코드를 실행했을떄는 L.range가 성능이 빠른것을 확인했습니다. 비슷하게 아래와 같이 코드 작성후 성능 확인을 했을경우 range함수가 L.range함수보다 빠르게 나오는 이유가 궁금합니다. test('range',10,() => [...range(1000000)].reduce(add)); test('Lrange',10,() => [...L.range(1000000)].reduce(add));

1
boutime2017 프로필

이터레이터를 배열에 담는 의미? boutime2017 1달 전
병렬 평가를 할 때 이터러블/이터레이터를 전개 연산자로 풀어서 배열 안에 담아 reduce함수에 전달해주던데요, 이렇게 했을 때 무슨 원리로 병렬 평가가 되는 건지 모르겠습니다 ㅠㅠ 배열도 결국 next()로 순회하는 이터레이터의 한 종류 아닌가요...? 저렇게 했을 때 Promise.all을 해주는 효과가 나나요?

3
toby0806 프로필

Symbol 사용 이유 toby0806 1달 전
안녕하세요. Symbol 사용 이유가 궁금해서 질문을 남기게 되었습니다. const nop = Symbol("nop") 대신으로, const nop = "nop";을 사용해도 정상 작동하는걸 확인했는데요, 1.혹시 Symbol("nop")을 사용하신 특별한 이유가 있을까요? 2.추가적으로 Symbol을 검색해도 명확히 설명 된 글을 찾지 못했습니다ㅠ. Symbol에 대해서 간단히 알려주실 수 있을까요?

2
GD 프로필

for 와 while 동작 차이 GD 2달 전
const reduce = curry((f, acc, iter) => { const head = iter => go1(take(1, iter), ([h]) => h); if (!iter) return reduce(f, head(iter = acc[Symbol.iterator]()), iter); iter = iter[Symbol.iterator](); return go1(acc, function recur(acc) { // WARN: 여기선 for 문을 쓰면 안됨 for (let a of iter) { // Promise 확인용 함수 reduceF 를 이용 acc = reduceF(acc, a, f); if (acc instanceof Promise) return acc.then(recur); } return acc; }); }) 여기서 for 와 while 의 동작 차이가 발생합니다.기존 recur 함수 안의 while 문을 for 로 대체하였을때 두번째 recur 실행 부터 iterator 가 정상적으로 실행되지 않고 종료가 되버립니다.이는 Promise 로 변경하였을때만 발생하였습니다. go([1, 2, 3, 4, 5, 6], L.map(a => a * a), L.filter(a => a % 2), reduce(add), console.log ) // 정상 동작 혹시여기서 for 와 while 의 차이가 발생하는 이유를 설명해주실 수 있을까요?

1
띵호 프로필

SCRIPT에서 HTML TAG 생성 띵호 2달 전
안녕하세요. 마크업된 HTML TAG를 SCRIPT로 제어한다고만 생각해보았지 SCRIPT에서 만들어서 그려주는건 사실 잘 안쓰는줄 알았는데,  설명하기 위해서 이방법을 쓰신건가요? 아니면 실무에서도 사용하는지 궁금합니다.

3
Darcie 프로필

강의랑 똑같이 콘솔 띄우는 방법 Darcie 2달 전
콘솔창을 어떻게 띄우냐는 질문들이 몇개 있어서 적어봅니다! 1. 예제 코드를 다운받습니다. 2. 크롬에서 이번 강의에 해당하는 html파일을 엽니다. 3. 크롬 개발자 도구를 엽니다. 4. 개발자도구를 새 창으로 띄웁니다. 4-1. [아래사진참고] 개발자 도구를 켜서 점 세개 메뉴를 클릭하면 창 배치를 고를 수 있습니다. 가장 왼쪽의 작은 네모 두개가 겹쳐져 있는 아이콘을 클릭합니다. 5. 에디터에서 해당 html파일을 열고, 개발자도구와 화면 분할하여 한 화면에 띄웁니다. 6. 에디터에서 수정한 것을 저장하고, 콘솔창에서 새로고침(단축키: 맥에서 Cmd+R) 하면 강의처럼 작성한 내용이 바로 콘솔창에 반영됩니다.

1
김상규 프로필

자바스크립트 기본서 추천 문의 김상규 3달 전
자바스크립트를 기본부터 제대로 공부하고 싶은데요. 꼭 봤으면 하는 자바스크립트 기본도서 있을까요? 추천 좀 부탁 드립니다. 감사합니다 ^^

1
toby0806 프로필

강의 선수과목 toby0806 3달 전
안녕하세요. 해당 강의를 듣기 전에 "자바스크립트로 알아보는 함수형 프로그래밍"은 선수과목 인가요??

2
김태진 프로필

질문이요 김태진 3달 전
선생님. 근데 curry같은 경우는 인자를 2개째 받게 되면 실행이 되잖아요. 만약 갯수를 설정해서 3개를 받았을때도 실행되도록 하고 싶은데, 조건문을 사용하여 curry함수 로직을 바꾸면 될까요?  filter함수를 이렇게 만들고 싶거든요... 근데 저 함수는 인자 3개를 받아 실행을 해야해서 curry가 안되더라구요 혹은 저 함수를 인자 2개만 받아도 조건과 push함수가 다르도록 고치는 방법이 있다면 조언해주시면 감사드리겠습니다.

1
webh4ck 프로필

안녕하세요 reduce 함수 사용에 대해서 질문 드립니다 webh4ck 4달 전
안녕하세요 . reduce 2에서 공부한 함수에서 궁금한 점이 생겨서 질문 드립니다. 먼저 제가 시도하려던 방향은 iter를 비우고 파라미터를 2개만 받아서 함수를 구현하려고 했는데 비구조화 함수를 쓰면서 되게 복잡하게 함수가 구현이 되었습니다.  그러면 acc가 optional이 아니라 필수처럼 보이게 되어서 그런데 이를 좀 더 간단하게 만들거나 추상적인걸 잘 만족시킬 수 있는 방법이 있을까요? const reduce = (f, acc, iter) => { if (!iter) { iter = acc[Symbol.iterator](); [acc, ...iter2] = iter; } for (const a of iter2) { acc = f(acc, a); } return acc; }; console.log( reduce((a, b) => { return { price: a.price + b.price }; }, products) );

1
hellofrontdev 프로필

3편 강의나 추가적인 저서 출판 소식은 없나요? hellofrontdev 4달 전
안녕하세요~ 1년차 UI 개발자입니다. 현재 함수형 프로그래밍과 Javascript ES6+를 수료하고 한번 더 다시 들으면서 개념을 정리를 하고 있습니다. 매우 많은 도움이 되었고 다음에 들을 응용편도 기대가 됩니다. 이전에 저자님이 작성하신 책에서도 많은 것을 보고 배웠습니다. 혹시 응용편 다음에 나올 강좌나 기존에 작성하신 책에 대한 개정판은 언제 나오게 될까요? 개인적으로 추후에는 유인동 저자님이 만든 함수형 강좌를 기반으로 작은 프로젝트를 만드는 강좌가 있으면 참 좋겠습니다!

1
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스