Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- html
- css
- React
- 자바스크립트
- 웹 성능
- cmdline-tools missing
- #프론트엔드개발
- 컴포넌트
- JavaScript
- 비동기프로그래밍
- dom
- 자바스크립트공부
- 퍼포먼스 최적화
- fe
- 프라미스체이닝
- 웹개발
- 프론트엔드
- 코드리뷰
- 풀스택 개발
- Promise
- 패키지 스크립트
- 웹 개발
- flutter 오류
- flutter android sdk
- jsx
- macos flutter
- 웹 성능 최적화
- 국제화(i18n)
- Node.js
- aondroid toolchain 오류
Archives
- Today
- Total
sodol-dotcom
함수 선언문의 스코프 본문
1. 함수 선언문은 함수 블록에서만 지역 스코프를 가진다.
- 함수 선언문은 함수 내부에서만 지역변수처럼 동작한다. 즉, 함수 안에서 선언된 함수는 해당 함수 안에서만 접근 가능하다.
- 하지만 함수가 아닌 일반인 블록문(`if`, `for`, `while`등) 안에서 선언된 함수는 블록 내에서만 유효하지 않고, 블록 바깥에서도 접근할 수 있다.
2. 코드 예시로 이해해 보면
2-1. 함수 블록 안에서의 함수 선언문 (지역 스코프를 가짐):
함수 선언문은 함수 블록 내에서는 지역적으로 작동한다. 즉, 그 함수에서만 유효하다.
function outerFunction() {
function innerFunction() {
console.log("This is inner function");
}
innerFunction(); // 호출 가능
}
outerFunction(); // outerFunction 호출
// innerFunction(); // Error: innerFunction is not defined
- `innerFunction`은 `outerFunction` 내부에 선언된 함수로, `outerFuction` 안에서만 호출할 수 있다.
- `outerFunction` 외부에서는 `innerFunction`을 호출할 수 없으므로 에러가 발생한다.
2-2. if문 또는 for문 같은 블록문 내 함수 선언문 (블록 스코프가 없음):
JavaScript에서는 `if`나 `for` 같은 블록문 내부에 선언된 함수도 사실 블록 스코프를 따르지 않고, 함수 스코프를 따른다.
if (true) {
function sayHello() {
console.log("Hello!");
}
}
sayHello(); // 호출 가능
- `sayHello` 함수가 `if` 블록 안에 선언되었지만, 블록이 끝난 후에도 호출 가능하다. 이는 JavaScript에서 함수 선언문이 함수 스코프를 따르기 때문이다. 블록 스코프는 적용되지 않는다.
결론
- 함수 선언문은 함수 블록 내에서만 지역 스코프를 가진다.
- 하지만, if문이나 for문 같은 블록문 안에서는 함수 선언문이 해당 블록에 제한되지 않고 함수 스코프를 따른다.
'Fundamentals > JavaScript' 카테고리의 다른 글
특정 프로퍼티에 괄호 표기법으로 접근하기 (0) | 2024.09.12 |
---|---|
함수 스코프, 지역 스코프, 블록 스코프 (0) | 2024.09.12 |
함수 전달 방식에 대한 이해: 함수 선언 vs. 기명 함수 표현식 (0) | 2024.09.10 |
자바스크립트 호이스팅 (0) | 2024.09.09 |
함수 선언식과 함수 표현식 (0) | 2024.09.09 |