본문 바로가기

클로저3

클로저 활용 예시 (2) 클로저 활용 예시 (2) - 부분 적용 함수 부분 적용 함수란 a개의 인자를 받는 함수에 미리 b개의 인자만 넘겨 기억시켰다가, 나중에 (a - b)개의 인자를 넘기면 비로소 원래 함수의 실행 결과를 얻을 수 있도록 만든 함수이다. 부분 적용 함수가 클로저의 활용 예시인 이유는 미리 일부 인자를 넘겨두어 기억하게끔 하고 추후 필요한 시점에 기억했던 인자들까지 함께 실행하게 한다는 원리가 클로저의 정의와 부합하기 때문이다. /* 고차함수를 활용한 부분 적용 함수 */ let partial = function() { // 🅰️ console.log(arguments); let originPartialArgs = arguments; let func = originPartialArgs[0]; if (typeof.. 2022. 5. 1.
클로저 활용 예시 (1) 클로저 활용 예시 (1) - 콜백함수가 외부 데이터 참조 콜백함수 내부에서 외부변수를 참조하는 클로저의 두가지 로직을 기록하기 위해🧐 첫 번째는 콜백함수를 내부함수로 선언해서 외부변수를 직접 참조하는 로직이고, 두 번째는 콜백함수를 고차함수로 바꿔서 클로저를 활용하는 로직이다. 1. 콜백함수가 외부변수를 직접 참조 let delivery = ['chicken', 'pizza', 'sushi']; let $ul = document.createElement('ul'); delivery.forEach(el => { // 콜백함수(A) let $li = document.createElement('li'); $li.innerText = el; $li.addEventListener('click', function(.. 2022. 3. 31.
클로저 (Closure) 1. 클로저란? 외부함수 A에서 선언한 "지역변수 a를 참조하는 내부함수 B가 외부로 전달"될 경우 A의 실행 컨텍스트가 종료된 이후에도 변수 a가 사라지지 않는 현상(참조할 수 있는 현상) 지역변수를 참조하는 내부함수를 외부에 전달하면 클로저! 내부함수에서 외부 변수를 사용하면 클로저! ✅ 내부함수를 외부로 전달하는 방법은 함수를 return 하거나 콜백으로 전달 2. 일반함수의 경우? outer함수의 실행 컨텍스트가 종료되기 전에 이미 inner함수의 실행 컨텍스트가 종료돼 있으므로 이후 별도로 inner함수를 호출할 수 없다. 일반 함수와 마찬가지로 outer의 Lexical Environment가 모두 가비지 컬렉팅 대상에 포함! ( inner가 먼저 종료되므로 outer의 Lexical Envi.. 2022. 3. 30.