상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 자바스크립트에서 함수의 중첩(Nested Function)은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
<a href='https://sangseek.com/sangseeks/자바/ko'>자바</a>스크립트에서 함수의 중첩(Nested Function)은 한 함수 안에 다른 함수를 정의하는 것을 의미합니다. 이러한 중첩 함수는 여러 가지 이유로 유용하게 사용될 수 있으며, 자바스크립트의 <a href='https://sangseek.com/sangseeks/함수형/ko'>함수형</a> 프로그래밍 패러다임을 잘 보여주는 예시 중 하나입니다. 중첩 함수는 외부 함수의 스코프(scope)에 접근할 수 있는 특성을 가지고 있어, 클로저(Closure)와 같은 개념과도 밀접하게 연결되어 있습니다. 중첩 함수의 정의 중첩 함수는 다음과 같이 정의할 수 있습니다: ```javascript function outerFunction() { function innerFunction() { console.log("This is the inner function."); } innerFunction(); // innerFunction 호출 } outerFunction(); // outerFunction 호출 ``` 위의 예제에서 `outerFunction`은 `innerFunction`을 정의하고 호출합니다. `innerFunction`은 `outerFunction`의 스코프 내에서만 접근할 수 있으며, 외부에서 직접 호출할 수 없습니다. 중첩 함수의 특징 1. 스코프 접근 : 중첩 함수는 외부 함수의 변수에 접근할 수 있습니다. 이는 중첩 함수가 외부 함수의 실행 컨텍스트에 포함되기 때문입니다. ```javascript function outerFunction() { let outerVariable = "I'm from outer function"; function innerFunction() { console.log(outerVariable); // "I'm from outer function" 출력 } innerFunction(); } outerFunction(); ``` 2. 클로저 : 중첩 함수는 클로저를 형성할 수 있습니다. 클로저는 함수가 자신이 정의된 스코프의 변수에 접근할 수 있는 능력을 말합니다. 이는 특히 비동기 프로그래밍이나 이벤트 핸들링에서 유용하게 사용됩니다. ```javascript function makeCounter() { let count = 0; return function() { count += 1; return count; }; } const counter = makeCounter(); console.log(counter()); // 1 console.log(counter()); // 2 console.log(counter()); // 3 ``` 위의 예제에서 `makeCounter` 함수는 `count` 변수를 정의하고, 이를 증가시키는 <a href='https://sangseek.com/sangseeks/내부 함수/ko'>내부 함수</a>를 반환합니다. 반환된 함수는 `count`에 대한 참조를 유지하므로, 매번 호출할 때마다 `count`의 값을 증가시킬 수 있습니다. 3. 모듈화 : 중첩 함수를 사용하면 코드를 더 잘 구조화하고 모듈화할 수 있습니다. 외부 함수가 특정 기능을 수행하고, 그 기능에 필요한 보조 작업을 중첩 함수로 정의함으로써 코드의 가독성을 높일 수 있습니다. ```javascript function calculateArea(shape) { function rectangleArea(length, width) { return length * width; } function circleArea(radius) { return Math.PI * radius * radius; } if (shape.type === "rectangle") { return rectangleArea(shape.length, shape.width); } else if (shape.type === "circle") { return circleArea(shape.radius); } } console.log(calculateArea({ type: "rectangle", length: 5, width: 3 })); // 15 console.log(calculateArea({ type: "circle", radius: 2 })); // 12.566370614359172 ``` 중첩 함수의 단점 1. 가독성 저하 : 중첩 함수가 너무 많아지면 코드가 복잡해지고 가독성이 떨어질 수 있습니다. 따라서 적절한 수준에서 중첩 함수를 사용하는 것이 중요합니다. 2. 메모리 사용 : 중첩 함수는 외부 함수의 스코프에 대한 참조를 유지하므로, 메모리 사용 측면에서 비효율적일 수 있습니다. 특히, 중첩 함수가 많은 경우 불필요한 메모리 사용을 초래할 수 있습니다. 결론 자바스크립트에서 함수의 중첩은 강력한 기능으로, 코드의 구조화, 클로저의 활용, 그리고 특정 작업을 모듈화하는 데 유용합니다. 그러나 중첩 함수의 사용은 적절한 수준에서 이루어져야 하며, 가독성과 메모리 사용 측면에서의 고려가 필요합니다. 중첩 함수는 자바스크립트의 유연성과 <a href='https://sangseek.com/sangseeks/강력함/ko'>강력함</a>을 보여주는 중요한 개념 중 하나입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기