상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 자바스크립트에서 함수의 스코프를 이해하는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
<a href='https://sangseek.com/sangseeks/자바/ko'>자바</a>스크립트에서 함수의 스코프(Scope)는 변수의 유효 범위를 정의하는 중요한 개념입니다. 스코프는 변수가 어디에서 접근 가능하고, 어디에서 유효한지를 결정합니다. 자바스크립트는 주로 <a href='https://sangseek.com/sangseeks/함수 스코프/ko'>함수 스코프</a>와 <a href='https://sangseek.com/sangseeks/블록 스코프/ko'>블록 스코프</a>를 지원하며, 이를 이해하는 것은 코드의 가독성과 유지보수성을 높이는 데 큰 도움이 됩니다. 1. 스코프의 종류 1.1. <a href='https://sangseek.com/sangseeks/전역 스코프/ko'>전역 스코프</a> (Global Scope) 전역 스코프는 코드의 가장 바깥쪽에 위치한 스코프입니다. 전역 변수는 프로그램의 어디에서나 접근할 수 있습니다. 예를 들어, 전역에서 선언된 변수는 모든 함수와 블록 내에서 접근할 수 있습니다. ```javascript let globalVar = "I am global"; function testGlobalScope() { console.log(globalVar); // "I am global" } testGlobalScope(); console.log(globalVar); // "I am global" ``` 1.2. 함수 스코프 (Function Scope) 함수 스코프는 함수 내에서 선언된 변수의 유효 범위를 정의합니다. 함수 내부에서 선언된 변수는 함수 외부에서 접근할 수 없습니다. 이는 함수가 호출될 때마다 새로운 스코프가 생성됨을 의미합니다. ```javascript function testFunctionScope() { let localVar = "I am local"; console.log(localVar); // "I am local" } testFunctionScope(); console.log(localVar); // ReferenceError: localVar is not defined ``` 1.3. 블록 스코프 (Block Scope) ES6(ECMAScript 2015)부터 도입된 블록 스코프는 `{}`로 둘러싸인 코드 블록 내에서 변수가 유효함을 의미합니다. `let`과 `const` 키워드를 사용하여 선언된 변수는 블록 스코프를 가집니다. ```javascript if (true) { let blockVar = "I am block scoped"; console.log(blockVar); // "I am block scoped" } console.log(blockVar); // ReferenceError: blockVar is not defined ``` 2. <a href='https://sangseek.com/sangseeks/스코프 체인/ko'>스코프 체인</a> (Scope Chain) 자바스크립트는 스코프 체인을 통해 변수를 찾습니다. 변수가 선언된 위치에 따라 스코프가 결정되며, 자바스크립트는 현재 스코프에서 변수를 찾고, 없으면 외부 스코프를 차례로 검색합니다. 이 과정을 스코프 체인이라고 합니다. ```javascript let outerVar = "I am outside"; function outerFunction() { let innerVar = "I am inside"; function innerFunction() { console.log(outerVar); // "I am outside" console.log(innerVar); // "I am inside" } innerFunction(); } outerFunction(); ``` 3. 클로저 (Closure) 클로저는 함수가 생성될 때의 스코프를 기억하는 기능입니다. 클로저는 함수가 외부 스코프의 변수를 참조할 수 있게 해주며, 이는 데이터 은닉 및 상태 유지에 유용합니다. ```javascript function makeCounter() { let count = 0; return function() { count++; return count; }; } const counter = makeCounter(); console.log(counter()); // 1 console.log(counter()); // 2 ``` 4. 스코프와 변수 <a href='https://sangseek.com/sangseeks/호이스팅/ko'>호이스팅</a> (Hoisting) 자바스크립트에서는 변수 선언이 해당 스코프의 최상단으로 끌어올려지는 호이스팅 현상이 있습니다. 그러나 변수의 초기화는 선언 위치에서 이루어집니다. 따라서 변수를 선언하기 전에 접근하면 `<a href='https://sangseek.com/sangseeks/undefined/ko'>undefined</a>`가 반환됩니다. ```javascript console.log(hoistedVar); // undefined var hoistedVar = "I am hoisted"; console.log(hoistedVar); // "I am hoisted" ``` 5. 결론 자바스크립트에서 함수의 스코프를 이해하는 것은 코드의 구조와 흐름을 명확히 하고, 변수의 생명 주기를 관리하는 데 필수적입니다. 전역 스코프, 함수 스코프, 블록 스코프의 차이를 이해하고, 스코프 체인과 클로저의 개념을 활용하면 더 나은 자바스크립트 프로그래밍이 가능합니다. 이러한 개념들은 자바스크립트의 비동기 프로그래밍, 이벤트 핸들링, 모듈화 등 다양한 측면에서 중요한 역할을 합니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기