목록전체 글 (126)
코딩쌀롱

부분 적용 함수(partially applied function) 부분 적용 함수란 n개의 인자를 받는 함수에 미리 m개의 인자만 넘겨 기억시켰다가, 나중에 n-m개의 인자를 넘기면 비로소 원래 함수의 실행 결과를 얻을 수 있게끔 하는 함수이다. this를 바인딩해야 하는 점을 제외하면 bind 메서드의 실행 결과가 바로 부분 적용 함수다. this를 사용하지 않는다면 bind 메서드만으로 문제없이 구현되겠지만 this의 값을 변경(null)할 수 밖에 없기 때문에 메서드에서는 사용할 수 없다. bind와 다르게 this에 관여하지 않는 부분 적용 함수가 있다면 더 좋을 것이다. 1) 부분 적용 함수 구현(1) 첫 번째 인자로 원본 함수, 두 번째 인자 이후부터는 미리 적용할 인자들을 전달하고, 반환할 ..

콜백 함수 내부에서 외부 데이터를 사용하고자 할 때 1) 콜백함수를 내부함수로 선언, 외부 변수 직접 참조 const fruits = ['apple', 'banana', 'peach']; const $ul = document.createElement('ul'); // (공통 코드) fruits.forEach(function (fruit) { // (A) forEach 콜백 const $li = document.createElement('li'); $li.innerText = fruit; $li.addEventListener('click', function() { // (B) 클릭e 핸들러 alert('your choice is ' + fruit); // fruit 외부 변수 참조 }); $ul.appen..

이해 못한 문제 let funcArr = []; for(let i = 0; i console.log(c) ); } funcArr.forEach( fn => fn() ) 출력 결과를 예상해보자. 반복문이 모두 돌면 var가 함수 레벨 스코프이기 때문에 c = 8이 된다. 그리고 funcArr에는 함수 다섯 개가 들어가 있다. forEach로 funcArr에 있는 함수를 모두 실행시키면 console.log(c)를 다섯 번 실행한다. c의 값은 var로 전역변수로 선언돼있고, 마지막 값인 8이다. 따라서 8 8 8 8 8이 출력된다. 위의 예시에서 var를 let으로만 바꿨다. 출력 결과를 예상해보자. let funcArr =..