상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 자바스크립트에서 함수의 클로저를 활용하는 예시는 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
<a href='https://sangseek.com/sangseeks/자바/ko'>자바</a>스크립트에서 클로저(Closure)는 함수와 그 함수가 선언된 렉시컬 환경(Lexical Environment)의 조합을 의미합니다. 클로저는 함수가 외부 함수의 변수에 접근할 수 있도록 해주며, 이는 주로 데이터 은닉, 상태 유지, 그리고 함수의 <a href='https://sangseek.com/sangseeks/재사용성/ko'>재사용성</a>을 높이는 데 유용합니다. 클로저를 활용하는 여러 가지 예시를 살펴보겠습니다. 1. 데이터 은닉 클로저를 사용하여 특정 데이터를 은닉할 수 있습니다. 외부에서 직접 접근할 수 없는 변수를 만들고, 이를 조작할 수 있는 메서드만을 제공함으로써 데이터의 무결성을 유지할 수 있습니다. ```javascript function createCounter() { let count = 0; // 은닉된 변수 return { increment: function() { count++; return count; }, decrement: function() { count--; return count; }, getCount: function() { return count; } }; } const counter = createCounter(); console.log(counter.increment()); // 1 console.log(counter.increment()); // 2 console.log(counter.getCount()); // 2 console.log(counter.decrement()); // 1 ``` 위의 예시에서 `count` 변수는 `createCounter` 함수의 스코프 내에만 존재하며, 외부에서는 직접 접근할 수 없습니다. 대신, `increment`, `decrement`, `getCount` 메서드를 통해서만 `count`의 값을 조작할 수 있습니다. 2. 함수의 재사용성 클로저를 사용하면 특정 환경에서 설정된 상태를 유지하면서 함수를 재사용할 수 있습니다. 예를 들어, 특정 설정을 가진 여러 개의 함수를 생성할 수 있습니다. ```javascript function makeMultiplier(multiplier) { return function(x) { return x * multiplier; }; } const double = makeMultiplier(2); const triple = makeMultiplier(3); console.log(double(5)); // 10 console.log(triple(5)); // 15 ``` 위의 예시에서 `makeMultiplier` 함수는 `multiplier` 값을 클로저로 캡처하여, 각각의 `double`과 `triple` 함수가 서로 다른 곱셈 인자를 유지합니다. 3. <a href='https://sangseek.com/sangseeks/비동기/ko'>비동기</a> 프로그래밍에서의 클로저 클로저는 비동기 프로그래밍에서도 유용하게 사용됩니다. 예를 들어, 비동기 작업이 완료된 후 특정 변수를 참조할 수 있습니다. ```javascript function fetchData(url) { let data = null; // 비동기 작업 setTimeout(() => { data = `Fetched data from ${url}`; console.log(data); }, 1000); return function() { return data; // 비동기 작업이 완료되기 전에는 null을 반환 }; } const <a href='https://sangseek.com/sangseeks/getData/ko'>getData</a> = fetchData('https://api.example.com'); console.log(getData()); // null (비동기 작업이 완료되지 않음) setTimeout(() => { console.log(getData()); // Fetched data from https://api.example.com }, 1500); ``` 이 예시에서는 `fetchData` 함수가 비동기적으로 데이터를 가져오는 작업을 수행합니다. 클로저를 통해 `getData` 함수는 `data` 변수에 접근할 수 있으며, 비동기 작업이 완료된 후에만 유효한 값을 반환합니다. 4. 모듈 패턴 클로저는 모듈 패턴을 구현하는 데에도 사용됩니다. 모듈 패턴은 관련된 기능을 그룹화하고, 외부에서 접근할 수 없는 상태를 유지하는 데 유용합니다. ```javascript const Module = (function() { let privateVariable = 'I am private'; return { getPrivateVariable: function() { return privateVariable; }, setPrivateVariable: function(value) { privateVariable = value; } }; })(); console.log(Module.getPrivateVariable()); // I am private Module.setPrivateVariable('New value'); console.log(Module.getPrivateVariable()); // New value ``` 위의 예시에서 `Module`은 즉시 실행 함수(IIFE)를 사용하여 클로저를 생성하고, `privateVariable`을 은닉합니다. 외부에서는 `getPrivateVariable`과 `setPrivateVariable` 메서드를 통해서만 이 변수에 접근할 수 있습니다. 결론 클로저는 자바스크립트에서 매우 강력한 개념으로, 데이터 은닉, 상태 유지, 함수의 재사용성, 비동기 프로그래밍, 모듈 패턴 등 다양한 상황에서 유용하게 활용됩니다. 클로저를 이해하고 적절히 활용하는 것은 자바스크립트 프로그래밍에서 중요한 기술 중 하나입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기