Scope
Chapter 6 - Function Scope, Block Scope and Lexical Scope
블록 스코프와 함수 스코프
// 자바스크립트는 함수 스코프를 사용한다.
let a = 10;
const fnA = () => {
console.log(a);
}
const fnB = () => {
// 함수내에서 새로운 스코프 변수를 선언할 수 있다.
const a = 15;
console.log(a);
}
fnB(); // 15
fnA(); // 10
문법적 설명은 조금 지저분하지만 코드를 보면 조금 더 쉽게 이해할 수 있다. 중괄호({/*...*/})로 구성되는 하나의 구역(블록)을 기준으로 선언된 변수들의 '유효반경'이 결정되는데 이 범위를 '스코프'라고 한다. 변수가 가지고 있는 스코프 밖에서는 해당 변수를 사용할 수 없다.
자바스크립트는 기본적으로 '함수 스코프'를 사용하며 '오직' 함수만이 자신만의 스코프를 가질 수 있다. 블록 스코프는 모든 블록(if, for, while, function, ...)들이 자신만의 스코프를 가질 수 있다. 최근엔 자바스크립트의 버전이 많이 올라가 블록 스코프(let, const)로 작동한다고 이해해도 좋다.
동적 스코프와 어휘적 스코프
동적 스코프는 함수가 호출된 시점을 기준으로 삼는다. 인터프리터가 코드를 실행할 때의 상태를 말한다. 어휘적 스코프는 인터프리터가 코드를 실행할 때 문법적으로 선언된 상태를 기준으로 삼는다.
초판: 2024. 08. 15. 21:54:56
© 2024 이 문서는 "CC BY 4.0 국제규약" 라이선스로 배포 되었습니다. 모든 권리는 저자에게 있습니다.