_curry 에서 질문 또 있어요
230
작성한 질문수 4
function _curry(fn){ return function(a, b){
return arguments.length === 2 ? fn(a,b) : function(b){ return fn(a, b); };
}
}
var add = _curry(function (a, b){
return a + b;
});
var add10 = add(10);
console.log(add10); ---> function(b){ return fn(a,b); }
console.log(add10(5)); ---> 15
제가 이해가 안가는 부분은 _curry 함수에서 전달받는 매개변수가 두개가 아닌 경우에
항상 function(b){ return fn(a,b); } 가 실행되니까, a + b 라는 최종적으로 실행하게 될 연산에 대해 계속해서 b 라는 변수에만 값을 할당해주게 되는데, 어떻게 10 + 5라는 연산이 되는지 모르겠어요.
add(10)의 최종 결과는 a + 10이 되고 , 여기서 add(10)을 add10 이라는 변수에 담고 다시
add10(5)를 실행하게 되면....어떻게 되는건지 상상이 안되요.
답변 3
1
아....매개변수가 두개인 함수에서 매개변수를 하나만 전달하면, 그냥 앞부분의 매개변수부터 차례대로 전달이 되는거군요... 그래서 function add( a, b) { return a + b } 에서 add(10) 을 실행하면 add 라는 함수의 매개변수에 a = 10 , b = undfined 가 되는거군요....
위의 문제에서는,
여러개의 매개변수를 전달받는 함수의 경우, 매개변수를 하나만 전달 받으면 가장 앞부분의 매개변수 부터 값을 전달받으니까...
var add10 = add(10) 여기서 a 라는 매개변수에 10을 할당한 상태이고..
add10 은 function(b){ return fn(a, b) } 인데, 이걸 실행시키면 반환값인 fn(a,b) 가 나오니까
function (a, b){
return a + b;
} 이게 실행.
여기서 a 는 맨 첨에 10으로 할당한 상태니까 매개변수 b 에만 값을 전달해주면 되는거고... 이렇게 차례대로 매개변수를 전달 받으니까 삼항 연산자에서 뒷부분의 a, b 순서를 바꾸면 안되겠네요.
삼항연산자 뒤의 b, a는 매개변수일 뿐이지 같은 값을 저장하고 있는 변수값이 아니라는걸 제대로 이해못했어요.
앞서 드린 질문도 해결되었어요//
FxTS를 이용한 함수형 프로그래밍에 대해 궁금한점이 있습니다.
1
292
1
안녕하세요. 유인동님 함수형 프로그래밍 2편을 구매했는데
0
351
2
_go함수 _pipe.apply(null, fns) 사용하는 이유
0
404
2
커리큘럼 관련 질문 입니다.
0
347
2
ES5 강의를 듣고 ES6 강의를 듣는게 좋을까요?
0
861
2
_get 함수 부분이 너무 이해가 안갑니다 ㅠ
0
656
2
거르기 함수 중 compact 질문드립니다.
0
475
1
강의 잘봤습니당
0
452
1
다형성 파트 _each함수 내부 코드 관련 질문
0
323
1
FP 함수 표준이 있는지 궁금합니다.
0
365
2
_curryR 을 적용한 _map 혹은 _filter함수 질문입니다!!
0
451
4
_reduce 질문 있습니다!
0
388
1
0:24 평가시점
0
254
2
10:18 아무래도 클로저가 리스프? 다 보니까
0
308
1
평가시점이 뭐에요? 16:30초 부터
0
367
1
강의자료
0
291
1
pipe 함수에 질문있습니다
0
284
1
대입문
0
343
1
Call을 사용하는 이유
0
287
1
좋은 강의 감사합니다.
0
274
1
순수함수에 대해서 질문있습니다.
0
427
1
13:40 _filter함수 질문
0
281
1
소스 내 변수형
0
227
1
Apply와 Call의 차이
0
230
1





