목록closure (3)
코딩쌀롱
부분 적용 함수(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..
5-1 클로저의 의미 및 원리 이해 const outer = function () { let a = 1; const inner = function() { console.log(++a); }; inner(); }; outer(); (1) inner 함수 내부에서는 a를 선언하지 않았기 때문에 environmentRecord에서 값을 찾지 못하므로 outerEnvironmentReference에 지정된 상위 컨텍스트인 outer의 LexicalEnvironment(L.E)에 접근해서 다시 a를 찾는다. (2) 그리고 2가 출력된다. (3) outer 함수의 실행 컨텍스트가 종료되면 L.E에 저장된 식별자들(a, inner)에 대한 참조를 지운다. 그러면 각 주소에 저장돼 있던 값들은 자신을 참조하는 변수가 ..